[ { "inputs": [ { "internalType": "address", "name": "initialOwner", "type": "address" }, { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "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": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "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": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "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": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "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": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "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": "newuri", "type": "string" } ], "name": "setURI", "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "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": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506040516200481238038062004812833981810160405281019062000037919062000f39565b81604051806080016040528060438152602001620047cf6043913962000063816200013260201b60201c565b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000d95760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000d0919062000f91565b60405180910390fd5b620000ea816200014760201b60201c565b506000600360146101000a81548160ff0219169083151502179055506200012a82600183604051806020016040528060008152506200020d60201b60201c565b505062001731565b80600290816200014391906200121e565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6200021d6200023760201b60201c565b6200023184848484620002d960201b60201c565b50505050565b620002476200038560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200026d6200038d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d757620002996200038560201b60201c565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401620002ce919062000f91565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036200034e5760006040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000345919062000f91565b60405180910390fd5b600080620003638585620003b760201b60201c565b915091506200037d600087848487620003e760201b60201c565b505050505050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b620003fb85858585620004c060201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614620004b9576000620004426200038560201b60201c565b90506001845103620004a057600062000466600086620004da60201b90919060201c565b9050600062000480600086620004da60201b90919060201c565b905062000498838989858589620004ee60201b60201c565b5050620004b7565b620004b6818787878787620006b160201b60201c565b5b505b5050505050565b620004d4848484846200087460201b60201c565b50505050565b600060208202602084010151905092915050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115620006a9578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040162000552959493929190620013b0565b6020604051808303816000875af19250505080156200059157506040513d601f19601f820116820180604052508101906200058e919062001471565b60015b6200061b573d8060008114620005c4576040519150601f19603f3d011682016040523d82523d6000602084013e620005c9565b606091505b5060008151036200061357846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016200060a919062000f91565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614620006a757846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016200069e919062000f91565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b11156200086c578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016200071595949392919062001571565b6020604051808303816000875af19250505080156200075457506040513d601f19601f8201168201806040525081019062000751919062001471565b60015b620007de573d806000811462000787576040519150601f19603f3d011682016040523d82523d6000602084013e6200078c565b606091505b506000815103620007d657846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401620007cd919062000f91565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146200086a57846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040162000861919062000f91565b60405180910390fd5b505b505050505050565b620008888484848462000a3f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160362000971576000805b835181101562000953576000838281518110620008e357620008e2620015e3565b5b602002602001015190508060046000878581518110620009085762000907620015e3565b5b6020026020010151815260200190815260200160002060008282546200092f919062001641565b92505081905550808362000944919062001641565b925050806001019050620008c1565b50806005600082825462000968919062001641565b92505081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000a39576000805b835181101562000a26576000838281518110620009cc57620009cb620015e3565b5b602002602001015190508060046000878581518110620009f157620009f0620015e3565b5b6020026020010151815260200190815260200160002060008282540392505081905550808301925050806001019050620009aa565b5080600560008282540392505081905550505b50505050565b62000a4f62000a6960201b60201c565b62000a638484848462000ab360201b60201c565b50505050565b62000a7962000e7d60201b60201c565b1562000ab1576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b805182511462000b0057815181516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040162000af79291906200167c565b60405180910390fd5b600062000b126200038560201b60201c565b905060005b835181101562000d2e57600062000b388286620004da60201b90919060201c565b9050600062000b518386620004da60201b90919060201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161462000c8257600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101562000c2a57888183856040517f03dee4c500000000000000000000000000000000000000000000000000000000815260040162000c219493929190620016a9565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161462000d20578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000d18919062001641565b925050819055505b505080600101905062000b17565b50600183510362000df557600062000d51600085620004da60201b90919060201c565b9050600062000d6b600085620004da60201b90919060201c565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62858560405162000de59291906200167c565b60405180910390a4505062000e76565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405162000e6d929190620016f6565b60405180910390a45b5050505050565b6000600360149054906101000a900460ff16905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ec68262000e99565b9050919050565b62000ed88162000eb9565b811462000ee457600080fd5b50565b60008151905062000ef88162000ecd565b92915050565b6000819050919050565b62000f138162000efe565b811462000f1f57600080fd5b50565b60008151905062000f338162000f08565b92915050565b6000806040838503121562000f535762000f5262000e94565b5b600062000f638582860162000ee7565b925050602062000f768582860162000f22565b9150509250929050565b62000f8b8162000eb9565b82525050565b600060208201905062000fa8600083018462000f80565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200103057607f821691505b60208210810362001046576200104562000fe8565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010b07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001071565b620010bc868362001071565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620010ff620010f9620010f38462000efe565b620010d4565b62000efe565b9050919050565b6000819050919050565b6200111b83620010de565b620011336200112a8262001106565b8484546200107e565b825550505050565b600090565b6200114a6200113b565b6200115781848462001110565b505050565b5b818110156200117f576200117360008262001140565b6001810190506200115d565b5050565b601f821115620011ce5762001198816200104c565b620011a38462001061565b81016020851015620011b3578190505b620011cb620011c28562001061565b8301826200115c565b50505b505050565b600082821c905092915050565b6000620011f360001984600802620011d3565b1980831691505092915050565b60006200120e8383620011e0565b9150826002028217905092915050565b620012298262000fae565b67ffffffffffffffff81111562001245576200124462000fb9565b5b62001251825462001017565b6200125e82828562001183565b600060209050601f83116001811462001296576000841562001281578287015190505b6200128d858262001200565b865550620012fd565b601f198416620012a6866200104c565b60005b82811015620012d057848901518255600182019150602085019450602081019050620012a9565b86831015620012f05784890151620012ec601f891682620011e0565b8355505b6001600288020188555050505b505050505050565b620013108162000efe565b82525050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200135257808201518184015260208101905062001335565b60008484015250505050565b6000601f19601f8301169050919050565b60006200137c8262001316565b62001388818562001321565b93506200139a81856020860162001332565b620013a5816200135e565b840191505092915050565b600060a082019050620013c7600083018862000f80565b620013d6602083018762000f80565b620013e5604083018662001305565b620013f4606083018562001305565b81810360808301526200140881846200136f565b90509695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200144b8162001414565b81146200145757600080fd5b50565b6000815190506200146b8162001440565b92915050565b6000602082840312156200148a576200148962000e94565b5b60006200149a848285016200145a565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b620014da8162000efe565b82525050565b6000620014ee8383620014cf565b60208301905092915050565b6000602082019050919050565b60006200151482620014a3565b620015208185620014ae565b93506200152d83620014bf565b8060005b8381101562001564578151620015488882620014e0565b97506200155583620014fa565b92505060018101905062001531565b5085935050505092915050565b600060a08201905062001588600083018862000f80565b62001597602083018762000f80565b8181036040830152620015ab818662001507565b90508181036060830152620015c1818562001507565b90508181036080830152620015d781846200136f565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200164e8262000efe565b91506200165b8362000efe565b925082820190508082111562001676576200167562001612565b5b92915050565b600060408201905062001693600083018562001305565b620016a2602083018462001305565b9392505050565b6000608082019050620016c0600083018762000f80565b620016cf602083018662001305565b620016de604083018562001305565b620016ed606083018462001305565b95945050505050565b6000604082019050818103600083015262001712818562001507565b9050818103602083015262001728818462001507565b90509392505050565b61308e80620017416000396000f3fe608060405234801561001057600080fd5b50600436106101415760003560e01c80636b20c454116100b8578063a22cb4651161007c578063a22cb4651461033a578063bd85b03914610356578063e985e9c514610386578063f242432a146103b6578063f2fde38b146103d2578063f5298aca146103ee57610141565b80636b20c454146102d0578063715018a6146102ec578063731133e9146102f65780638456cb59146103125780638da5cb5b1461031c57610141565b80631f7fdffa1161010a5780631f7fdffa146102105780632eb2c2d61461022c5780633f4ba83a146102485780634e1273f4146102525780634f558e79146102825780635c975abb146102b257610141565b8062fdd58e1461014657806301ffc9a71461017657806302fe5305146101a65780630e89341c146101c257806318160ddd146101f2575b600080fd5b610160600480360381019061015b9190611f36565b61040a565b60405161016d9190611f85565b60405180910390f35b610190600480360381019061018b9190611ff8565b610464565b60405161019d9190612040565b60405180910390f35b6101c060048036038101906101bb91906121a1565b610546565b005b6101dc60048036038101906101d791906121ea565b61055a565b6040516101e99190612296565b60405180910390f35b6101fa6105ee565b6040516102079190611f85565b60405180910390f35b61022a60048036038101906102259190612421565b6105f8565b005b610246600480360381019061024191906124dc565b610612565b005b6102506106ba565b005b61026c6004803603810190610267919061266e565b6106cc565b60405161027991906127a4565b60405180910390f35b61029c600480360381019061029791906121ea565b6107d5565b6040516102a99190612040565b60405180910390f35b6102ba6107e9565b6040516102c79190612040565b60405180910390f35b6102ea60048036038101906102e591906127c6565b610800565b005b6102f46108ac565b005b610310600480360381019061030b9190612851565b6108c0565b005b61031a6108da565b005b6103246108ec565b60405161033191906128e3565b60405180910390f35b610354600480360381019061034f919061292a565b610916565b005b610370600480360381019061036b91906121ea565b61092c565b60405161037d9190611f85565b60405180910390f35b6103a0600480360381019061039b919061296a565b610949565b6040516103ad9190612040565b60405180910390f35b6103d060048036038101906103cb91906129aa565b6109dd565b005b6103ec60048036038101906103e79190612a41565b610a85565b005b61040860048036038101906104039190612a6e565b610b0b565b005b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061052f57507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061053f575061053e82610bb7565b5b9050919050565b61054e610c21565b61055781610ca8565b50565b60606002805461056990612af0565b80601f016020809104026020016040519081016040528092919081815260200182805461059590612af0565b80156105e25780601f106105b7576101008083540402835291602001916105e2565b820191906000526020600020905b8154815290600101906020018083116105c557829003601f168201915b50505050509050919050565b6000600554905090565b610600610c21565b61060c84848484610cbb565b50505050565b600061061c610d41565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610661575061065f8682610949565b155b156106a55780866040517fe237d92200000000000000000000000000000000000000000000000000000000815260040161069c929190612b21565b60405180910390fd5b6106b28686868686610d49565b505050505050565b6106c2610c21565b6106ca610e41565b565b6060815183511461071857815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161070f929190612b4a565b60405180910390fd5b6000835167ffffffffffffffff81111561073557610734612076565b5b6040519080825280602002602001820160405280156107635781602001602082028036833780820191505090505b50905060005b84518110156107ca576107a06107888287610ea490919063ffffffff16565b61079b8387610eb890919063ffffffff16565b61040a565b8282815181106107b3576107b2612b73565b5b602002602001018181525050806001019050610769565b508091505092915050565b6000806107e18361092c565b119050919050565b6000600360149054906101000a900460ff16905090565b610808610d41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610851575061084f8361084a610d41565b610949565b155b1561089c5761085e610d41565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610893929190612b21565b60405180910390fd5b6108a7838383610ecc565b505050565b6108b4610c21565b6108be6000610f60565b565b6108c8610c21565b6108d484848484611026565b50505050565b6108e2610c21565b6108ea6110bf565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610928610921610d41565b8383611122565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006109e7610d41565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610a2c5750610a2a8682610949565b155b15610a705780866040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610a67929190612b21565b60405180910390fd5b610a7d8686868686611292565b505050505050565b610a8d610c21565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aff5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401610af691906128e3565b60405180910390fd5b610b0881610f60565b50565b610b13610d41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610b5c5750610b5a83610b55610d41565b610949565b155b15610ba757610b69610d41565b836040517fe237d922000000000000000000000000000000000000000000000000000000008152600401610b9e929190612b21565b60405180910390fd5b610bb283838361139d565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c29610d41565b73ffffffffffffffffffffffffffffffffffffffff16610c476108ec565b73ffffffffffffffffffffffffffffffffffffffff1614610ca657610c6a610d41565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610c9d91906128e3565b60405180910390fd5b565b8060029081610cb79190612d4e565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d2d5760006040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610d2491906128e3565b60405180910390fd5b610d3b600085858585611444565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610dbb5760006040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401610db291906128e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610e2d5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610e2491906128e3565b60405180910390fd5b610e3a8585858585611444565b5050505050565b610e496114f6565b6000600360146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610e8d610d41565b604051610e9a91906128e3565b60405180910390a1565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3e5760006040517f01a83514000000000000000000000000000000000000000000000000000000008152600401610f3591906128e3565b60405180910390fd5b610f5b836000848460405180602001604052806000815250611444565b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036110985760006040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161108f91906128e3565b60405180910390fd5b6000806110a58585611536565b915091506110b7600087848487611444565b505050505050565b6110c7611566565b6001600360146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861110b610d41565b60405161111891906128e3565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111945760006040517fced3e10000000000000000000000000000000000000000000000000000000000815260040161118b91906128e3565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516112859190612040565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036113045760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016112fb91906128e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036113765760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161136d91906128e3565b60405180910390fd5b6000806113838585611536565b915091506113948787848487611444565b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361140f5760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161140691906128e3565b60405180910390fd5b60008061141c8484611536565b9150915061143d856000848460405180602001604052806000815250611444565b5050505050565b611450858585856115a7565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146114ef57600061148e610d41565b905060018451036114de5760006114af600086610eb890919063ffffffff16565b905060006114c7600086610eb890919063ffffffff16565b90506114d78389898585896115b9565b50506114ed565b6114ec81878787878761176d565b5b505b5050505050565b6114fe6107e9565b611534576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b61156e6107e9565b156115a5576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6115b384848484611921565b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611765578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161161a959493929190612e75565b6020604051808303816000875af192505050801561165657506040513d601f19601f820116820180604052508101906116539190612ee4565b60015b6116da573d8060008114611686576040519150601f19603f3d011682016040523d82523d6000602084013e61168b565b606091505b5060008151036116d257846040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116c991906128e3565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461176357846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161175a91906128e3565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611919578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b81526004016117ce959493929190612f11565b6020604051808303816000875af192505050801561180a57506040513d601f19601f820116820180604052508101906118079190612ee4565b60015b61188e573d806000811461183a576040519150601f19603f3d011682016040523d82523d6000602084013e61183f565b606091505b50600081510361188657846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161187d91906128e3565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461191757846040517f57f447ce00000000000000000000000000000000000000000000000000000000815260040161190e91906128e3565b60405180910390fd5b505b505050505050565b61192d84848484611acc565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a07576000805b83518110156119eb57600083828151811061198357611982612b73565b5b6020026020010151905080600460008785815181106119a5576119a4612b73565b5b6020026020010151815260200190815260200160002060008282546119ca9190612fa8565b9250508190555080836119dd9190612fa8565b925050806001019050611965565b5080600560008282546119fe9190612fa8565b92505081905550505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ac6576000805b8351811015611ab3576000838281518110611a5d57611a5c612b73565b5b602002602001015190508060046000878581518110611a7f57611a7e612b73565b5b6020026020010151815260200190815260200160002060008282540392505081905550808301925050806001019050611a3f565b5080600560008282540392505081905550505b50505050565b611ad4611566565b611ae084848484611ae6565b50505050565b8051825114611b3057815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611b27929190612b4a565b60405180910390fd5b6000611b3a610d41565b905060005b8351811015611d49576000611b5d8286610eb890919063ffffffff16565b90506000611b748386610eb890919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611ca157600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c4957888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611c409493929190612fdc565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611d3c578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d349190612fa8565b925050819055505b5050806001019050611b3f565b506001835103611e08576000611d69600085610eb890919063ffffffff16565b90506000611d81600085610eb890919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611df9929190612b4a565b60405180910390a45050611e87565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611e7e929190613021565b60405180910390a45b5050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611ecd82611ea2565b9050919050565b611edd81611ec2565b8114611ee857600080fd5b50565b600081359050611efa81611ed4565b92915050565b6000819050919050565b611f1381611f00565b8114611f1e57600080fd5b50565b600081359050611f3081611f0a565b92915050565b60008060408385031215611f4d57611f4c611e98565b5b6000611f5b85828601611eeb565b9250506020611f6c85828601611f21565b9150509250929050565b611f7f81611f00565b82525050565b6000602082019050611f9a6000830184611f76565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611fd581611fa0565b8114611fe057600080fd5b50565b600081359050611ff281611fcc565b92915050565b60006020828403121561200e5761200d611e98565b5b600061201c84828501611fe3565b91505092915050565b60008115159050919050565b61203a81612025565b82525050565b60006020820190506120556000830184612031565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6120ae82612065565b810181811067ffffffffffffffff821117156120cd576120cc612076565b5b80604052505050565b60006120e0611e8e565b90506120ec82826120a5565b919050565b600067ffffffffffffffff82111561210c5761210b612076565b5b61211582612065565b9050602081019050919050565b82818337600083830152505050565b600061214461213f846120f1565b6120d6565b9050828152602081018484840111156121605761215f612060565b5b61216b848285612122565b509392505050565b600082601f8301126121885761218761205b565b5b8135612198848260208601612131565b91505092915050565b6000602082840312156121b7576121b6611e98565b5b600082013567ffffffffffffffff8111156121d5576121d4611e9d565b5b6121e184828501612173565b91505092915050565b600060208284031215612200576121ff611e98565b5b600061220e84828501611f21565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612251578082015181840152602081019050612236565b60008484015250505050565b600061226882612217565b6122728185612222565b9350612282818560208601612233565b61228b81612065565b840191505092915050565b600060208201905081810360008301526122b0818461225d565b905092915050565b600067ffffffffffffffff8211156122d3576122d2612076565b5b602082029050602081019050919050565b600080fd5b60006122fc6122f7846122b8565b6120d6565b9050808382526020820190506020840283018581111561231f5761231e6122e4565b5b835b8181101561234857806123348882611f21565b845260208401935050602081019050612321565b5050509392505050565b600082601f8301126123675761236661205b565b5b81356123778482602086016122e9565b91505092915050565b600067ffffffffffffffff82111561239b5761239a612076565b5b6123a482612065565b9050602081019050919050565b60006123c46123bf84612380565b6120d6565b9050828152602081018484840111156123e0576123df612060565b5b6123eb848285612122565b509392505050565b600082601f8301126124085761240761205b565b5b81356124188482602086016123b1565b91505092915050565b6000806000806080858703121561243b5761243a611e98565b5b600061244987828801611eeb565b945050602085013567ffffffffffffffff81111561246a57612469611e9d565b5b61247687828801612352565b935050604085013567ffffffffffffffff81111561249757612496611e9d565b5b6124a387828801612352565b925050606085013567ffffffffffffffff8111156124c4576124c3611e9d565b5b6124d0878288016123f3565b91505092959194509250565b600080600080600060a086880312156124f8576124f7611e98565b5b600061250688828901611eeb565b955050602061251788828901611eeb565b945050604086013567ffffffffffffffff81111561253857612537611e9d565b5b61254488828901612352565b935050606086013567ffffffffffffffff81111561256557612564611e9d565b5b61257188828901612352565b925050608086013567ffffffffffffffff81111561259257612591611e9d565b5b61259e888289016123f3565b9150509295509295909350565b600067ffffffffffffffff8211156125c6576125c5612076565b5b602082029050602081019050919050565b60006125ea6125e5846125ab565b6120d6565b9050808382526020820190506020840283018581111561260d5761260c6122e4565b5b835b8181101561263657806126228882611eeb565b84526020840193505060208101905061260f565b5050509392505050565b600082601f8301126126555761265461205b565b5b81356126658482602086016125d7565b91505092915050565b6000806040838503121561268557612684611e98565b5b600083013567ffffffffffffffff8111156126a3576126a2611e9d565b5b6126af85828601612640565b925050602083013567ffffffffffffffff8111156126d0576126cf611e9d565b5b6126dc85828601612352565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61271b81611f00565b82525050565b600061272d8383612712565b60208301905092915050565b6000602082019050919050565b6000612751826126e6565b61275b81856126f1565b935061276683612702565b8060005b8381101561279757815161277e8882612721565b975061278983612739565b92505060018101905061276a565b5085935050505092915050565b600060208201905081810360008301526127be8184612746565b905092915050565b6000806000606084860312156127df576127de611e98565b5b60006127ed86828701611eeb565b935050602084013567ffffffffffffffff81111561280e5761280d611e9d565b5b61281a86828701612352565b925050604084013567ffffffffffffffff81111561283b5761283a611e9d565b5b61284786828701612352565b9150509250925092565b6000806000806080858703121561286b5761286a611e98565b5b600061287987828801611eeb565b945050602061288a87828801611f21565b935050604061289b87828801611f21565b925050606085013567ffffffffffffffff8111156128bc576128bb611e9d565b5b6128c8878288016123f3565b91505092959194509250565b6128dd81611ec2565b82525050565b60006020820190506128f860008301846128d4565b92915050565b61290781612025565b811461291257600080fd5b50565b600081359050612924816128fe565b92915050565b6000806040838503121561294157612940611e98565b5b600061294f85828601611eeb565b925050602061296085828601612915565b9150509250929050565b6000806040838503121561298157612980611e98565b5b600061298f85828601611eeb565b92505060206129a085828601611eeb565b9150509250929050565b600080600080600060a086880312156129c6576129c5611e98565b5b60006129d488828901611eeb565b95505060206129e588828901611eeb565b94505060406129f688828901611f21565b9350506060612a0788828901611f21565b925050608086013567ffffffffffffffff811115612a2857612a27611e9d565b5b612a34888289016123f3565b9150509295509295909350565b600060208284031215612a5757612a56611e98565b5b6000612a6584828501611eeb565b91505092915050565b600080600060608486031215612a8757612a86611e98565b5b6000612a9586828701611eeb565b9350506020612aa686828701611f21565b9250506040612ab786828701611f21565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b0857607f821691505b602082108103612b1b57612b1a612ac1565b5b50919050565b6000604082019050612b3660008301856128d4565b612b4360208301846128d4565b9392505050565b6000604082019050612b5f6000830185611f76565b612b6c6020830184611f76565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612c047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612bc7565b612c0e8683612bc7565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612c4b612c46612c4184611f00565b612c26565b611f00565b9050919050565b6000819050919050565b612c6583612c30565b612c79612c7182612c52565b848454612bd4565b825550505050565b600090565b612c8e612c81565b612c99818484612c5c565b505050565b5b81811015612cbd57612cb2600082612c86565b600181019050612c9f565b5050565b601f821115612d0257612cd381612ba2565b612cdc84612bb7565b81016020851015612ceb578190505b612cff612cf785612bb7565b830182612c9e565b50505b505050565b600082821c905092915050565b6000612d2560001984600802612d07565b1980831691505092915050565b6000612d3e8383612d14565b9150826002028217905092915050565b612d5782612217565b67ffffffffffffffff811115612d7057612d6f612076565b5b612d7a8254612af0565b612d85828285612cc1565b600060209050601f831160018114612db85760008415612da6578287015190505b612db08582612d32565b865550612e18565b601f198416612dc686612ba2565b60005b82811015612dee57848901518255600182019150602085019450602081019050612dc9565b86831015612e0b5784890151612e07601f891682612d14565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b6000612e4782612e20565b612e518185612e2b565b9350612e61818560208601612233565b612e6a81612065565b840191505092915050565b600060a082019050612e8a60008301886128d4565b612e9760208301876128d4565b612ea46040830186611f76565b612eb16060830185611f76565b8181036080830152612ec38184612e3c565b90509695505050505050565b600081519050612ede81611fcc565b92915050565b600060208284031215612efa57612ef9611e98565b5b6000612f0884828501612ecf565b91505092915050565b600060a082019050612f2660008301886128d4565b612f3360208301876128d4565b8181036040830152612f458186612746565b90508181036060830152612f598185612746565b90508181036080830152612f6d8184612e3c565b90509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fb382611f00565b9150612fbe83611f00565b9250828201905080821115612fd657612fd5612f79565b5b92915050565b6000608082019050612ff160008301876128d4565b612ffe6020830186611f76565b61300b6040830185611f76565b6130186060830184611f76565b95945050505050565b6000604082019050818103600083015261303b8185612746565b9050818103602083015261304f8184612746565b9050939250505056fea2646970667358221220d0a64206cd1e96a00c78dc62d40e09c2cd30c7a7b76014d6f4c4343a1a21748d64736f6c6343000818003368747470733a2f2f697066732e696f2f697066732f516d586e6f4c534e73545975746b7143364a776f5a37486f6a797574664b77504d746e647473656a59574d42776d0000000000000000000000009e17d83de550dfd4585632e725fd92e72b9c3f4a0000000000000000000000000000000000000000000000000000000000000096