[ { "inputs": [ { "internalType": "address", "name": "minter", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "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": "InvalidInitialization", "type": "error" }, { "inputs": [], "name": "MintERC1155_ExcessEditions", "type": "error" }, { "inputs": [], "name": "MintERC1155_PercentChance0", "type": "error" }, { "inputs": [], "name": "MintERC1155_TotalPercentChanceNot100", "type": "error" }, { "inputs": [], "name": "MintERC1155_Unauthorized", "type": "error" }, { "inputs": [], "name": "NotInitializing", "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": "account", "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": [], "name": "ContractURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "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": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "inputs": [], "name": "MINTER", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "description", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "editions", "outputs": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "imageURI", "type": "string" }, { "internalType": "uint256", "name": "percentChance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllEditions", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "imageURI", "type": "string" }, { "internalType": "uint256", "name": "percentChance", "type": "uint256" }, { "components": [ { "internalType": "string", "name": "traitType", "type": "string" }, { "internalType": "string", "name": "value", "type": "string" } ], "internalType": "struct MintERC1155.Attribute[]", "name": "attributes", "type": "tuple[]" } ], "internalType": "struct MintERC1155.Edition[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPercentChances", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "imageURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "imageURI_", "type": "string" }, { "internalType": "string", "name": "description_", "type": "string" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "imageURI", "type": "string" }, { "internalType": "uint256", "name": "percentChance", "type": "uint256" }, { "components": [ { "internalType": "string", "name": "traitType", "type": "string" }, { "internalType": "string", "name": "value", "type": "string" } ], "internalType": "struct MintERC1155.Attribute[]", "name": "attributes", "type": "tuple[]" } ], "internalType": "struct MintERC1155.Edition[]", "name": "editions_", "type": "tuple[]" }, { "internalType": "uint16", "name": "royaltyAmountBps", "type": "uint16" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintBatch", "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": [], "name": "renounceOwnership", "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" } ], "name": "safeTransferAcceptanceCheckOnMint", "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": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "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": "name_", "type": "string" }, { "internalType": "string", "name": "imageURI_", "type": "string" }, { "internalType": "string", "name": "description_", "type": "string" }, { "internalType": "address", "name": "royaltyReceiver", "type": "address" }, { "internalType": "uint16", "name": "royaltyAmountBps", "type": "uint16" } ], "name": "setContractInfo", "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": "totalEditions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60a060405234801561000f575f80fd5b50604051613df4380380613df483398101604081905261002e916100f9565b610036610047565b6001600160a01b0316608052610126565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100975760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100f65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610109575f80fd5b81516001600160a01b038116811461011f575f80fd5b9392505050565b608051613ca16101535f395f818161040e0152818161162e015281816117fc015261196f0152613ca15ff3fe608060405234801561000f575f80fd5b50600436106101a4575f3560e01c80637284e416116100e8578063d81d0a1511610093578063f242432a1161006e578063f242432a146103e3578063f2fde38b146103f6578063fe6d812414610409578063ffa1ad7414610430575f80fd5b8063d81d0a151461036e578063e8a3d48514610381578063e985e9c514610389575f80fd5b80639d4d2563116100c35780639d4d256314610335578063a22cb46514610348578063c19c30431461035b575f80fd5b80637284e416146102d457806383e36e0f146102dc5780638da5cb5b146102f1575f80fd5b806329051383116101535780634e1273f41161012e5780634e1273f41461029d57806351d329dc146102bd578063635280f5146102c4578063715018a6146102cc575f80fd5b806329051383146102435780632a55205a146102585780632eb2c2d61461028a575f80fd5b80630e89341c116101835780630e89341c14610206578063135d088d14610219578063279c806e14610221575f80fd5b8062fdd58e146101a857806301ffc9a7146101ce57806306fdde03146101f1575b5f80fd5b6101bb6101b6366004612a3a565b610469565b6040519081526020015b60405180910390f35b6101e16101dc366004612a8f565b6104b1565b60405190151581526020016101c5565b6101f96104bb565b6040516101c59190612afe565b6101f9610214366004612b10565b610547565b6101f9610892565b61023461022f366004612b10565b61089f565b6040516101c593929190612b27565b610256610251366004612bec565b6109df565b005b61026b610266366004612cc7565b610e8a565b604080516001600160a01b0390931683526020830191909152016101c5565b610256610298366004612e40565b610fa9565b6102b06102ab366004612ee3565b61106b565b6040516101c59190612fd7565b5f546101bb565b6102b061114f565b6102566111f2565b6101f9611205565b6102e4611212565b6040516101c59190612fe9565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101c5565b610256610343366004613114565b61158c565b6102566103563660046131b7565b6115f8565b6101e16103693660046131f0565b611607565b61025661037c366004613209565b611964565b6101f96119e5565b6101e1610397366004613278565b6001600160a01b039182165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45016020908152604080832093909416825291909152205460ff1690565b6102566103f13660046132a9565b611ae2565b6102566104043660046131f0565b611b97565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b60408051808201909152600581527f312e302e3000000000000000000000000000000000000000000000000000000060208201526101f9565b5f8181527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6104ab82611bed565b600180546104c890613309565b80601f01602080910402602001604051908101604052809291908181526020018280546104f490613309565b801561053f5780601f106105165761010080835404028352916020019161053f565b820191905f5260205f20905b81548152906001019060200180831161052257829003601f168201915b505050505081565b60605f80610556600185613381565b8154811061056657610566613394565b905f5260205f2090600402016040518060800160405290815f8201805461058c90613309565b80601f01602080910402602001604051908101604052809291908181526020018280546105b890613309565b80156106035780601f106105da57610100808354040283529160200191610603565b820191905f5260205f20905b8154815290600101906020018083116105e657829003601f168201915b5050505050815260200160018201805461061c90613309565b80601f016020809104026020016040519081016040528092919081815260200182805461064890613309565b80156106935780601f1061066a57610100808354040283529160200191610693565b820191905f5260205f20905b81548152906001019060200180831161067657829003601f168201915b505050505081526020016002820154815260200160038201805480602002602001604051908101604052809291908181526020015f905b82821015610819578382905f5260205f2090600202016040518060400160405290815f820180546106fa90613309565b80601f016020809104026020016040519081016040528092919081815260200182805461072690613309565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050815260200160018201805461078a90613309565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613309565b80156108015780601f106107d857610100808354040283529160200191610801565b820191905f5260205f20905b8154815290600101906020018083116107e457829003601f168201915b505050505081525050815260200190600101906106ca565b505050508152505090505f610830825f0151611c42565b61083983611c4e565b6108468460200151611c42565b604051602001610858939291906133c1565b60405160208183030381529060405290508060405160200161087a91906134aa565b60405160208183030381529060405292505050919050565b600280546104c890613309565b5f81815481106108ad575f80fd5b905f5260205f2090600402015f91509050805f0180546108cc90613309565b80601f01602080910402602001604051908101604052809291908181526020018280546108f890613309565b80156109435780601f1061091a57610100808354040283529160200191610943565b820191905f5260205f20905b81548152906001019060200180831161092657829003601f168201915b50505050509080600101805461095890613309565b80601f016020809104026020016040519081016040528092919081815260200182805461098490613309565b80156109cf5780601f106109a6576101008083540402835291602001916109cf565b820191905f5260205f20905b8154815290600101906020018083116109b257829003601f168201915b5050505050908060020154905083565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff165f81158015610a295750825b90505f8267ffffffffffffffff166001148015610a455750303b155b905081158015610a53575080155b15610a8a576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610aeb5784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b6019871115610b26576040517fe80cc99f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b88811015610d97575f805460010181558052898982818110610b4d57610b4d613394565b9050602002810190610b5f91906134ee565b610b69908061352a565b5f8381548110610b7b57610b7b613394565b905f5260205f2090600402015f019182610b969291906135cf565b50898982818110610ba957610ba9613394565b9050602002810190610bbb91906134ee565b610bc990602081019061352a565b5f8381548110610bdb57610bdb613394565b905f5260205f2090600402016001019182610bf79291906135cf565b50898982818110610c0a57610c0a613394565b9050602002810190610c1c91906134ee565b604001355f8281548110610c3257610c32613394565b905f5260205f20906004020160020181905582610c4f9190613689565b9150898982818110610c6357610c63613394565b9050602002810190610c7591906134ee565b604001355f03610cb1576040517fc0a2fb5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8a8a83818110610cc557610cc5613394565b9050602002810190610cd791906134ee565b610ce590606081019061369c565b9050811015610d8e575f8281548110610d0057610d00613394565b905f5260205f2090600402016003018b8b84818110610d2157610d21613394565b9050602002810190610d3391906134ee565b610d4190606081019061369c565b83818110610d5157610d51613394565b9050602002810190610d639190613700565b81546001810183555f9283526020909220909160020201610d848282613732565b5050600101610cb3565b50600101610b29565b5080606414610dd2576040517f0b5b7a3700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508d8d60019182610de49291906135cf565b506002610df28c8e836135cf565b506003610e008a8c836135cf565b50610e0a8f611d6c565b610e188f8761ffff16611d7d565b8315610e795784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050505050565b5f8281527fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b01602090815260408083208151808301909252546001600160a01b038116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169282019290925282917fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b009190610f6b57506040805180820190915281546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b60208101515f9061271090610f8e906bffffffffffffffffffffffff168861380f565b610f989190613826565b9151945090925050505b9250929050565b336001600160a01b038616811480159061100757506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b15611056576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b6110638686868686611e91565b505050505050565b606081518351146110b557815183516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161104d565b5f835167ffffffffffffffff8111156110d0576110d0612ce7565b6040519080825280602002602001820160405280156110f9578160200160208202803683370190505b5090505f5b84518110156111475760208082028601015161112290602080840287010151610469565b82828151811061113457611134613394565b60209081029190910101526001016110fe565b509392505050565b5f80546060919067ffffffffffffffff81111561116e5761116e612ce7565b604051908082528060200260200182016040528015611197578160200160208202803683370190505b5090505f5b5f548110156111ec575f81815481106111b7576111b7613394565b905f5260205f209060040201600201548282815181106111d9576111d9613394565b602090810291909101015260010161119c565b50919050565b6111fa611f29565b6112035f611f9d565b565b600380546104c890613309565b5f80546060919067ffffffffffffffff81111561123157611231612ce7565b60405190808252806020026020018201604052801561128c57816020015b611279604051806080016040528060608152602001606081526020015f8152602001606081525090565b81526020019060019003908161124f5790505b5090505f5b5f548110156111ec575f81815481106112ac576112ac613394565b905f5260205f2090600402016040518060800160405290815f820180546112d290613309565b80601f01602080910402602001604051908101604052809291908181526020018280546112fe90613309565b80156113495780601f1061132057610100808354040283529160200191611349565b820191905f5260205f20905b81548152906001019060200180831161132c57829003601f168201915b5050505050815260200160018201805461136290613309565b80601f016020809104026020016040519081016040528092919081815260200182805461138e90613309565b80156113d95780601f106113b0576101008083540402835291602001916113d9565b820191905f5260205f20905b8154815290600101906020018083116113bc57829003601f168201915b505050505081526020016002820154815260200160038201805480602002602001604051908101604052809291908181526020015f905b8282101561155f578382905f5260205f2090600202016040518060400160405290815f8201805461144090613309565b80601f016020809104026020016040519081016040528092919081815260200182805461146c90613309565b80156114b75780601f1061148e576101008083540402835291602001916114b7565b820191905f5260205f20905b81548152906001019060200180831161149a57829003601f168201915b505050505081526020016001820180546114d090613309565b80601f01602080910402602001604051908101604052809291908181526020018280546114fc90613309565b80156115475780601f1061151e57610100808354040283529160200191611547565b820191905f5260205f20905b81548152906001019060200180831161152a57829003601f168201915b50505050508152505081526020019060010190611410565b505050508152505082828151811061157957611579613394565b6020908102919091010152600101611291565b611594611f29565b6115a2828261ffff16611d7d565b60016115ae868261385e565b5060026115bb858261385e565b5060036115c8848261385e565b506040517fa5d4097edda6d87cb9329af83fb3712ef77eeb13738ffe43cc35a4ce305ad962905f90a15050505050565b611603338383612025565b5050565b5f816001600160a01b03163b5f0361162157506001919050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301525f60448301819052600160648401819052608484015260a060a484015260c4830181905291829185169062061a809060e40160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff23a6e6100000000000000000000000000000000000000000000000000000000179052516116e9919061391a565b5f604051808303818686fa925050503d805f8114611722576040519150601f19603f3d011682016040523d82523d5f602084013e611727565b606091505b509150915081156117a2575f81806020019051810190611747919061392b565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461179c57505f949350505050565b506117ab565b505f9392505050565b6040805160018082528183019092525f91602080830190803683370190505090506001815f815181106117e0576117e0613394565b602002602001018181525050846001600160a01b031662061a807f00000000000000000000000000000000000000000000000000000000000000005f84856040516024016118319493929190613946565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fbc197c810000000000000000000000000000000000000000000000000000000017905251611894919061391a565b5f604051808303818686fa925050503d805f81146118cd576040519150601f19603f3d011682016040523d82523d5f602084013e6118d2565b606091505b509093509150821561194f575f828060200190518101906118f3919061392b565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461194957505f95945050505050565b50611959565b505f949350505050565b506001949350505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146119c6576040517fad08474d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119e083838360405180602001604052805f815250612115565b505050565b60605f611a79600180546119f890613309565b80601f0160208091040260200160405190810160405280929190818152602001828054611a2490613309565b8015611a6f5780601f10611a4657610100808354040283529160200191611a6f565b820191905f5260205f20905b815481529060010190602001808311611a5257829003601f168201915b5050505050611c42565b611a89600280546119f890613309565b611a99600380546119f890613309565b604051602001611aab9392919061399f565b604051602081830303815290604052905080604051602001611acd91906134aa565b60405160208183030381529060405291505090565b336001600160a01b0386168114801590611b4057506001600160a01b038087165f9081527f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4501602090815260408083209385168352929052205460ff16155b15611b8a576040517fe237d9220000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301528716602482015260440161104d565b611063868686868661216a565b611b9f611f29565b6001600160a01b038116611be1576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b611bea81611f9d565b50565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806104ab57506104ab82612229565b60606104ab825f61230b565b60608181015160408051808201909152600181527f5b0000000000000000000000000000000000000000000000000000000000000060208201525f5b8251811015611d425781611cb9848381518110611ca957611ca9613394565b60200260200101515f0151611c42565b611cdf858481518110611cce57611cce613394565b602002602001015160200151611c42565b604051602001611cf193929190613a88565b604051602081830303815290604052915060018351611d109190613381565b811015611d3a5781604051602001611d289190613b48565b60405160208183030381529060405291505b600101611c8a565b5080604051602001611d549190613b88565b60408051601f19818403018152919052949350505050565b611d74612412565b611bea81612479565b7fdaedc9ab023613a7caf35e703657e986ccfad7e3eb0af93a2853f8d65dd86b006127106bffffffffffffffffffffffff8316811015611e00576040517f6f483d090000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff841660048201526024810182905260440161104d565b6001600160a01b038416611e42576040517fb6d9900a0000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b50604080518082019091526001600160a01b039093168084526bffffffffffffffffffffffff909216602090930183905274010000000000000000000000000000000000000000909202179055565b6001600160a01b038416611ed3576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b6001600160a01b038516611f15576040517f01a835140000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b611f228585858585612481565b5050505050565b33611f5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614611203576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161104d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080547fffffffffffffffffffffffff000000000000000000000000000000000000000081166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c45006001600160a01b038316612088576040517fced3e1000000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b6001600160a01b038481165f81815260018401602090815260408083209488168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b038416612157576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b6121645f85858585612481565b50505050565b6001600160a01b0384166121ac576040517f57f447ce0000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b6001600160a01b0385166121ee576040517f01a835140000000000000000000000000000000000000000000000000000000081525f600482015260240161104d565b604080516001808252602082018690528183019081526060820185905260808201909252906122208787848487612481565b50505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806122bb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b806104ab57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146104ab565b8151604051602001908301821561232757602282538160010191505b7b5c75303030303031323334353637383961626364656662746e0066726015526b1000000000000004000000005b8185146123e55760018501945060ff8551166020811061239e57816001821b166123885780845360018401935050612355565b605c845380600185015360028401935050612355565b6137006001821b166123cb578060041c51601d53600f811651601e53601951845260068401935050612355565b605c84536008810151600185015350600283019250612355565b505081156123f557602281536001015b5f815260408051601f198184030181526020909201905292915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff16611203576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b9f612412565b61248d858585856124d4565b6001600160a01b03841615611f2257825133906001036124c657602084810151908401516124bf838989858589612738565b5050611063565b6110638187878787876128d5565b805182517f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c4500911461253e57825182516040517f5b0599910000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161104d565b335f5b8451811015612659576020818102868101820151908601909101516001600160a01b0389161561260b575f828152602086815260408083206001600160a01b038d168452909152902054818110156125e5576040517f03dee4c50000000000000000000000000000000000000000000000000000000081526001600160a01b038b16600482015260248101829052604481018390526064810184905260840161104d565b5f838152602087815260408083206001600160a01b038e16845290915290209082900390555b6001600160a01b0388161561264f575f828152602086815260408083206001600160a01b038c16845290915281208054839290612649908490613689565b90915550505b5050600101612541565b5083516001036126d95760208401515f906020850151909150866001600160a01b0316886001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516126ca929190918252602082015260400190565b60405180910390a45050611063565b846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612728929190613bc8565b60405180910390a4505050505050565b6001600160a01b0384163b15611063576040517ff23a6e610000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063f23a6e61906127959089908990889088908890600401613bf5565b6020604051808303815f875af19250505080156127cf575060408051601f3d908101601f191682019092526127cc9181019061392b565b60015b61284f573d8080156127fc576040519150601f19603f3d011682016040523d82523d5f602084013e612801565b606091505b5080515f03612847576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240161104d565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014612220576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240161104d565b6001600160a01b0384163b15611063576040517fbc197c810000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063bc197c81906129329089908990889088908890600401613c37565b6020604051808303815f875af192505050801561296c575060408051601f3d908101601f191682019092526129699181019061392b565b60015b612999573d8080156127fc576040519150601f19603f3d011682016040523d82523d5f602084013e612801565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014612220576040517f57f447ce0000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260240161104d565b80356001600160a01b0381168114612a35575f80fd5b919050565b5f8060408385031215612a4b575f80fd5b612a5483612a1f565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611bea575f80fd5b5f60208284031215612a9f575f80fd5b8135612aaa81612a62565b9392505050565b5f5b83811015612acb578181015183820152602001612ab3565b50505f910152565b5f8151808452612aea816020860160208601612ab1565b601f01601f19169290920160200192915050565b602081525f612aaa6020830184612ad3565b5f60208284031215612b20575f80fd5b5035919050565b606081525f612b396060830186612ad3565b8281036020840152612b4b8186612ad3565b915050826040830152949350505050565b5f8083601f840112612b6c575f80fd5b50813567ffffffffffffffff811115612b83575f80fd5b602083019150836020828501011115610fa2575f80fd5b5f8083601f840112612baa575f80fd5b50813567ffffffffffffffff811115612bc1575f80fd5b6020830191508360208260051b8501011115610fa2575f80fd5b803561ffff81168114612a35575f80fd5b5f805f805f805f805f8060c08b8d031215612c05575f80fd5b612c0e8b612a1f565b995060208b013567ffffffffffffffff80821115612c2a575f80fd5b612c368e838f01612b5c565b909b50995060408d0135915080821115612c4e575f80fd5b612c5a8e838f01612b5c565b909950975060608d0135915080821115612c72575f80fd5b612c7e8e838f01612b5c565b909750955060808d0135915080821115612c96575f80fd5b50612ca38d828e01612b9a565b9094509250612cb6905060a08c01612bdb565b90509295989b9194979a5092959850565b5f8060408385031215612cd8575f80fd5b50508035926020909101359150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612d3d57612d3d612ce7565b604052919050565b5f67ffffffffffffffff821115612d5e57612d5e612ce7565b5060051b60200190565b5f82601f830112612d77575f80fd5b81356020612d8c612d8783612d45565b612d14565b8083825260208201915060208460051b870101935086841115612dad575f80fd5b602086015b84811015612dc95780358352918301918301612db2565b509695505050505050565b5f82601f830112612de3575f80fd5b813567ffffffffffffffff811115612dfd57612dfd612ce7565b612e106020601f19601f84011601612d14565b818152846020838601011115612e24575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f60a08688031215612e54575f80fd5b612e5d86612a1f565b9450612e6b60208701612a1f565b9350604086013567ffffffffffffffff80821115612e87575f80fd5b612e9389838a01612d68565b94506060880135915080821115612ea8575f80fd5b612eb489838a01612d68565b93506080880135915080821115612ec9575f80fd5b50612ed688828901612dd4565b9150509295509295909350565b5f8060408385031215612ef4575f80fd5b823567ffffffffffffffff80821115612f0b575f80fd5b818501915085601f830112612f1e575f80fd5b81356020612f2e612d8783612d45565b82815260059290921b84018101918181019089841115612f4c575f80fd5b948201945b83861015612f7157612f6286612a1f565b82529482019490820190612f51565b96505086013592505080821115612f86575f80fd5b50612f9385828601612d68565b9150509250929050565b5f815180845260208085019450602084015f5b83811015612fcc57815187529582019590820190600101612fb0565b509495945050505050565b602081525f612aaa6020830184612f9d565b5f6020808301818452808551808352604092508286019150828160051b8701018488015f5b83811015613106577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc089840301855281516080815181865261305282870182612ad3565b915050888201518582038a87015261306a8282612ad3565b838a0151878b0152606093840151878203948801949094528351808252938b01939092508a83019150600581901b83018b015f5b828110156130ef57601f19858303018452855180518d84526130c28e850182612ad3565b90508e82015191508381038f8501526130db8183612ad3565b978f0197958f01959350505060010161309e565b50988b01989650505092880192505060010161300e565b509098975050505050505050565b5f805f805f60a08688031215613128575f80fd5b853567ffffffffffffffff8082111561313f575f80fd5b61314b89838a01612dd4565b96506020880135915080821115613160575f80fd5b61316c89838a01612dd4565b95506040880135915080821115613181575f80fd5b5061318e88828901612dd4565b93505061319d60608701612a1f565b91506131ab60808701612bdb565b90509295509295909350565b5f80604083850312156131c8575f80fd5b6131d183612a1f565b9150602083013580151581146131e5575f80fd5b809150509250929050565b5f60208284031215613200575f80fd5b612aaa82612a1f565b5f805f6060848603121561321b575f80fd5b61322484612a1f565b9250602084013567ffffffffffffffff80821115613240575f80fd5b61324c87838801612d68565b93506040860135915080821115613261575f80fd5b5061326e86828701612d68565b9150509250925092565b5f8060408385031215613289575f80fd5b61329283612a1f565b91506132a060208401612a1f565b90509250929050565b5f805f805f60a086880312156132bd575f80fd5b6132c686612a1f565b94506132d460208701612a1f565b93506040860135925060608601359150608086013567ffffffffffffffff8111156132fd575f80fd5b612ed688828901612dd4565b600181811c9082168061331d57607f821691505b6020821081036111ec577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156104ab576104ab613354565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f7b226e616d65223a22000000000000000000000000000000000000000000000081525f84516133f8816009850160208901612ab1565b7f222c2261747472696275746573223a00000000000000000000000000000000006009918401918201528451613435816018840160208901612ab1565b7f2c22696d616765223a2200000000000000000000000000000000000000000000601892909101918201528351613473816022840160208801612ab1565b7f227d0000000000000000000000000000000000000000000000000000000000006022929091019182015260240195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c000000000081525f82516134e181601b850160208701612ab1565b91909101601b0192915050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613520575f80fd5b9190910192915050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261355d575f80fd5b83018035915067ffffffffffffffff821115613577575f80fd5b602001915036819003821315610fa2575f80fd5b601f8211156119e057805f5260205f20601f840160051c810160208510156135b05750805b601f840160051c820191505b81811015611f22575f81556001016135bc565b67ffffffffffffffff8311156135e7576135e7612ce7565b6135fb836135f58354613309565b8361358b565b5f601f84116001811461362c575f85156136155750838201355b5f19600387901b1c1916600186901b178355611f22565b5f83815260208120601f198716915b8281101561365b578685013582556020948501946001909201910161363b565b5086821015613677575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b808201808211156104ab576104ab613354565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126136cf575f80fd5b83018035915067ffffffffffffffff8211156136e9575f80fd5b6020019150600581901b3603821315610fa2575f80fd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613520575f80fd5b61373c828361352a565b67ffffffffffffffff81111561375457613754612ce7565b613768816137628554613309565b8561358b565b5f601f821160018114613799575f83156137825750838201355b5f19600385901b1c1916600184901b1785556137f0565b5f85815260208120601f198516915b828110156137c857868501358255602094850194600190920191016137a8565b50848210156137e4575f1960f88660031b161c19848701351681555b505060018360011b0185555b50505050613801602083018361352a565b6121648183600186016135cf565b80820281158282048414176104ab576104ab613354565b5f82613859577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b815167ffffffffffffffff81111561387857613878612ce7565b61388c816138868454613309565b8461358b565b602080601f8311600181146138bf575f84156138a85750858301515b5f19600386901b1c1916600185901b178555611063565b5f85815260208120601f198616915b828110156138ed578886015182559484019460019091019084016138ce565b508582101561390a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251613520818460208701612ab1565b5f6020828403121561393b575f80fd5b8151612aaa81612a62565b5f6001600160a01b03808716835280861660208401525060a0604083015261397160a0830185612f9d565b82810360608401526139838185612f9d565b83810360809094019390935250505f8152602001949350505050565b7f7b226e616d65223a22000000000000000000000000000000000000000000000081525f84516139d6816009850160208901612ab1565b7f222c22696d616765223a220000000000000000000000000000000000000000006009918401918201528451613a13816014840160208901612ab1565b7f222c226465736372697074696f6e223a22000000000000000000000000000000601492909101918201528351613a51816025840160208801612ab1565b7f227d0000000000000000000000000000000000000000000000000000000000006025929091019182015260270195945050505050565b5f8451613a99818460208901612ab1565b7f7b2274726169745f74797065223a2200000000000000000000000000000000009083019081528451613ad381600f840160208901612ab1565b7f222c2276616c7565223a22000000000000000000000000000000000000000000600f92909101918201528351613b1181601a840160208801612ab1565b7f227d000000000000000000000000000000000000000000000000000000000000601a9290910191820152601c0195945050505050565b5f8251613b59818460208701612ab1565b7f2c00000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b5f8251613b99818460208701612ab1565b7f5d00000000000000000000000000000000000000000000000000000000000000920191825250600101919050565b604081525f613bda6040830185612f9d565b8281036020840152613bec8185612f9d565b95945050505050565b5f6001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613c2c60a0830184612ad3565b979650505050505050565b5f6001600160a01b03808816835280871660208401525060a06040830152613c6260a0830186612f9d565b8281036060840152613c748186612f9d565b90508281036080840152613c888185612ad3565b9897505050505050505056fea164736f6c6343000819000a0000000000000000000000002422c8a8f7da90231e96e6c5f4cc763644d8347c