57 txs
65 calls
constructor
constructor(address initialCrapps, address initialAchievements)
functions
achievements
viewfunction achievements() view returns (address)
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
crapps
viewfunction crapps() view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
ownedSkins
viewfunction ownedSkins(address user) view returns (uint256[] ids)
owner
viewfunction owner() view returns (address)
skins
viewfunction skins(uint256 id) view returns (tuple)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
uri
viewfunction uri(uint256) view returns (string)
buySkin
nonpayablefunction buySkin(uint256 id)
disableSkin
nonpayablefunction disableSkin(uint256 id)
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setAchievements
nonpayablefunction setAchievements(address newAchievements)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setCrapps
nonpayablefunction setCrapps(address newCrapps)
setSkinPrice
nonpayablefunction setSkinPrice(uint256 id, uint256 amount)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
CrappySkinsAchievementsChanged
event CrappySkinsAchievementsChanged(address previousAchievements, address newAchivements)
CrappySkinsCrappsChanged
event CrappySkinsCrappsChanged(address previousCrapps, address newCrapps)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
URI
event URI(string value, uint256 indexed id)
errors
CrappySkinsAlreadyOwned
error CrappySkinsAlreadyOwned(uint256 id)
CrappySkinsInactive
error CrappySkinsInactive(uint256 id)
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60806040523480156200001157600080fd5b50604051620036f8380380620036f88339818101604052810190620000379190620002c7565b620000476200017a60201b60201c565b6040518060200160405280600081525062000068816200018260201b60201c565b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000de5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000d591906200031f565b60405180910390fd5b620000ef816200019760201b60201c565b5081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200069d565b600033905090565b8060029081620001939190620005b6565b5050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200028f8262000262565b9050919050565b620002a18162000282565b8114620002ad57600080fd5b50565b600081519050620002c18162000296565b92915050565b60008060408385031215620002e157620002e06200025d565b5b6000620002f185828601620002b0565b92505060206200030485828601620002b0565b9150509250929050565b620003198162000282565b82525050565b60006020820190506200033660008301846200030e565b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003be57607f821691505b602082108103620003d457620003d362000376565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200043e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620003ff565b6200044a8683620003ff565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000497620004916200048b8462000462565b6200046c565b62000462565b9050919050565b6000819050919050565b620004b38362000476565b620004cb620004c2826200049e565b8484546200040c565b825550505050565b600090565b620004e2620004d3565b620004ef818484620004a8565b505050565b5b8181101562000517576200050b600082620004d8565b600181019050620004f5565b5050565b601f82111562000566576200053081620003da565b6200053b84620003ef565b810160208510156200054b578190505b620005636200055a85620003ef565b830182620004f4565b50505b505050565b600082821c905092915050565b60006200058b600019846008026200056b565b1980831691505092915050565b6000620005a6838362000578565b9150826002028217905092915050565b620005c1826200033c565b67ffffffffffffffff811115620005dd57620005dc62000347565b5b620005e98254620003a5565b620005f68282856200051b565b600060209050601f8311600181146200062e576000841562000619578287015190505b62000625858262000598565b86555062000695565b601f1984166200063e86620003da565b60005b82811015620006685784890151825560018201915060208501945060208101905062000641565b8683101562000688578489015162000684601f89168262000578565b8355505b6001600288020188555050505b505050505050565b61304b80620006ad6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c8063715018a6116100ad578063e985e9c511610071578063e985e9c51461033e578063eb36824e1461036e578063ec9d1c621461038c578063f242432a146103a8578063f2fde38b146103c45761012b565b8063715018a6146102ae5780638da5cb5b146102b85780639d235de7146102d6578063a22cb465146102f2578063a2f163741461030e5761012b565b80632eb2c2d6116100f45780632eb2c2d61461020c5780634cb3088d146102285780634e1273f414610246578063525bb88914610276578063662fc8f4146102925761012b565b8062fdd58e1461013057806301ffc9a7146101605780630e89341c1461019057806311272424146101c05780632db2ede5146101dc575b600080fd5b61014a600480360381019061014591906120e0565b6103e0565b604051610157919061212f565b60405180910390f35b61017a600480360381019061017591906121a2565b61043a565b60405161018791906121ea565b60405180910390f35b6101aa60048036038101906101a59190612205565b61051c565b6040516101b791906122c2565b60405180910390f35b6101da60048036038101906101d591906122e4565b6105b0565b005b6101f660048036038101906101f19190612205565b610614565b6040516102039190612371565b60405180910390f35b61022660048036038101906102219190612589565b610666565b005b61023061070e565b60405161023d91906126b7565b60405180910390f35b610260600480360381019061025b9190612795565b610738565b60405161026d91906128bc565b60405180910390f35b610290600480360381019061028b9190612205565b610847565b005b6102ac60048036038101906102a791906128de565b610881565b005b6102b6610985565b005b6102c0610999565b6040516102cd919061291a565b60405180910390f35b6102f060048036038101906102eb9190612205565b6109c3565b005b61030c60048036038101906103079190612961565b610ddc565b005b610328600480360381019061032391906128de565b610df2565b60405161033591906128bc565b60405180910390f35b610358600480360381019061035391906129a1565b610e89565b60405161036591906121ea565b60405180910390f35b610376610f1d565b6040516103839190612a02565b60405180910390f35b6103a660048036038101906103a191906128de565b610f47565b005b6103c260048036038101906103bd9190612a1d565b61104b565b005b6103de60048036038101906103d991906128de565b6110f3565b005b600080600083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061050557507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610515575061051482611179565b5b9050919050565b60606002805461052b90612ae3565b80601f016020809104026020016040519081016040528092919081815260200182805461055790612ae3565b80156105a45780601f10610579576101008083540402835291602001916105a4565b820191906000526020600020905b81548152906001019060200180831161058757829003601f168201915b50505050509050919050565b6105b86111e3565b6040518060400160405280600115158152602001828152506006600084815260200190815260200160002060008201518160000160006101000a81548160ff021916908315150217905550602082015181600101559050505050565b61061c61201c565b600660008381526020019081526020016000206040518060400160405290816000820160009054906101000a900460ff161515151581526020016001820154815250509050919050565b600061067061126a565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156106b557506106b38682610e89565b155b156106f95780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016106f0929190612b14565b60405180910390fd5b6107068686868686611272565b505050505050565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060815183511461078457815183516040517f5b05999100000000000000000000000000000000000000000000000000000000815260040161077b929190612b3d565b60405180910390fd5b6000835167ffffffffffffffff8111156107a1576107a0612391565b5b6040519080825280602002602001820160405280156107cf5781602001602082028036833780820191505090505b50905060005b845181101561083c5761080c6107f4828761136a90919063ffffffff16565b610807838761137e90919063ffffffff16565b6103e0565b82828151811061081f5761081e612b66565b5b6020026020010181815250508061083590612bc4565b90506107d5565b508091505092915050565b61084f6111e3565b60006006600083815260200190815260200160002060000160006101000a81548160ff02191690831515021790555050565b6108896111e3565b8073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315610982576000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f0459dc289b4067c527a50bd91202e93e3609fb5d8373aa481c49dfc3fa8fdcc48183604051610978929190612b14565b60405180910390a1505b50565b61098d6111e3565b6109976000611392565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006109d66109d061126a565b836103e0565b1115610a1957806040517f5862bc4f000000000000000000000000000000000000000000000000000000008152600401610a10919061212f565b60405180910390fd5b6006600082815260200190815260200160002060000160009054906101000a900460ff16610a7e57806040517fb3426aca000000000000000000000000000000000000000000000000000000008152600401610a75919061212f565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac610ac461126a565b60066000858152602001908152602001600020600101546040518363ffffffff1660e01b8152600401610af8929190612c0c565b600060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b5050505060076000610b3661126a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190915055610bba610ba261126a565b82600160405180602001604052806000815250611458565b6000600267ffffffffffffffff811115610bd757610bd6612391565b5b604051908082528060200260200182016040528015610c055781602001602082028036833780820191505090505b5090506000600267ffffffffffffffff811115610c2557610c24612391565b5b604051908082528060200260200182016040528015610c535781602001602082028036833780820191505090505b509050600382600081518110610c6c57610c6b612b66565b5b60200260200101906008811115610c8657610c85612c35565b5b90816008811115610c9a57610c99612c35565b5b81525050600660008481526020019081526020016000206001015481600081518110610cc957610cc8612b66565b5b602002602001018181525050600482600181518110610ceb57610cea612b66565b5b60200260200101906008811115610d0557610d04612c35565b5b90816008811115610d1957610d18612c35565b5b81525050600181600181518110610d3357610d32612b66565b5b602002602001018181525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f99b0b14610d8561126a565b84846040518463ffffffff1660e01b8152600401610da593929190612d5b565b600060405180830381600087803b158015610dbf57600080fd5b505af1158015610dd3573d6000803e3d6000fd5b50505050505050565b610dee610de761126a565b83836114f1565b5050565b6060600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610e7d57602002820191906000526020600020905b815481526020019060010190808311610e69575b50505050509050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610f4f6111e3565b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160315611048576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1413c24ffb4f5b0ee91e868e200024b9ea20f9dcef07291f4ab7386159e43c1f818360405161103e929190612b14565b60405180910390a1505b50565b600061105561126a565b90508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161415801561109a57506110988682610e89565b155b156110de5780866040517fe237d9220000000000000000000000000000000000000000000000000000000081526004016110d5929190612b14565b60405180910390fd5b6110eb8686868686611661565b505050505050565b6110fb6111e3565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361116d5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401611164919061291a565b60405180910390fd5b61117681611392565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6111eb61126a565b73ffffffffffffffffffffffffffffffffffffffff16611209610999565b73ffffffffffffffffffffffffffffffffffffffff16146112685761122c61126a565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161125f919061291a565b60405180910390fd5b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036112e45760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016112db919061291a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036113565760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161134d919061291a565b60405180910390fd5b611363858585858561176c565b5050505050565b600060208202602084010151905092915050565b600060208202602084010151905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036114ca5760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016114c1919061291a565b60405180910390fd5b6000806114d7858561181e565b915091506114e960008784848761176c565b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115635760006040517fced3e10000000000000000000000000000000000000000000000000000000000815260040161155a919061291a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161165491906121ea565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036116d35760006040517f57f447ce0000000000000000000000000000000000000000000000000000000081526004016116ca919061291a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117455760006040517f01a8351400000000000000000000000000000000000000000000000000000000815260040161173c919061291a565b60405180910390fd5b600080611752858561181e565b91509150611763878784848761176c565b50505050505050565b6117788585858561184e565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146118175760006117b661126a565b905060018451036118065760006117d760008661137e90919063ffffffff16565b905060006117ef60008661137e90919063ffffffff16565b90506117ff838989858589611906565b5050611815565b611814818787878787611aba565b5b505b5050505050565b60608060405191506001825283602083015260408201905060018152826020820152604081016040529250929050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806118b55750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b6118f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118eb90612dec565b60405180910390fd5b61190084848484611c6e565b50505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611ab2578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b8152600401611967959493929190612e61565b6020604051808303816000875af19250505080156119a357506040513d601f19601f820116820180604052508101906119a09190612ed0565b60015b611a27573d80600081146119d3576040519150601f19603f3d011682016040523d82523d6000602084013e6119d8565b606091505b506000815103611a1f57846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611a16919061291a565b60405180910390fd5b805181602001fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611ab057846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611aa7919061291a565b60405180910390fd5b505b505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff163b1115611c66578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611b1b959493929190612efd565b6020604051808303816000875af1925050508015611b5757506040513d601f19601f82011682018060405250810190611b549190612ed0565b60015b611bdb573d8060008114611b87576040519150601f19603f3d011682016040523d82523d6000602084013e611b8c565b606091505b506000815103611bd357846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611bca919061291a565b60405180910390fd5b805181602001fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611c6457846040517f57f447ce000000000000000000000000000000000000000000000000000000008152600401611c5b919061291a565b60405180910390fd5b505b505050505050565b8051825114611cb857815181516040517f5b059991000000000000000000000000000000000000000000000000000000008152600401611caf929190612b3d565b60405180910390fd5b6000611cc261126a565b905060005b8351811015611ed7576000611ce5828661137e90919063ffffffff16565b90506000611cfc838661137e90919063ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614611e2957600080600084815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dd157888183856040517f03dee4c5000000000000000000000000000000000000000000000000000000008152600401611dc89493929190612f65565b60405180910390fd5b81810360008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611ec4578060008084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611ebc9190612faa565b925050819055505b505080611ed090612bc4565b9050611cc7565b506001835103611f96576000611ef760008561137e90919063ffffffff16565b90506000611f0f60008561137e90919063ffffffff16565b90508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051611f87929190612b3d565b60405180910390a45050612015565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161200c929190612fde565b60405180910390a45b5050505050565b6040518060400160405280600015158152602001600081525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120778261204c565b9050919050565b6120878161206c565b811461209257600080fd5b50565b6000813590506120a48161207e565b92915050565b6000819050919050565b6120bd816120aa565b81146120c857600080fd5b50565b6000813590506120da816120b4565b92915050565b600080604083850312156120f7576120f6612042565b5b600061210585828601612095565b9250506020612116858286016120cb565b9150509250929050565b612129816120aa565b82525050565b60006020820190506121446000830184612120565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61217f8161214a565b811461218a57600080fd5b50565b60008135905061219c81612176565b92915050565b6000602082840312156121b8576121b7612042565b5b60006121c68482850161218d565b91505092915050565b60008115159050919050565b6121e4816121cf565b82525050565b60006020820190506121ff60008301846121db565b92915050565b60006020828403121561221b5761221a612042565b5b6000612229848285016120cb565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561226c578082015181840152602081019050612251565b60008484015250505050565b6000601f19601f8301169050919050565b600061229482612232565b61229e818561223d565b93506122ae81856020860161224e565b6122b781612278565b840191505092915050565b600060208201905081810360008301526122dc8184612289565b905092915050565b600080604083850312156122fb576122fa612042565b5b6000612309858286016120cb565b925050602061231a858286016120cb565b9150509250929050565b61232d816121cf565b82525050565b61233c816120aa565b82525050565b6040820160008201516123586000850182612324565b50602082015161236b6020850182612333565b50505050565b60006040820190506123866000830184612342565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123c982612278565b810181811067ffffffffffffffff821117156123e8576123e7612391565b5b80604052505050565b60006123fb612038565b905061240782826123c0565b919050565b600067ffffffffffffffff82111561242757612426612391565b5b602082029050602081019050919050565b600080fd5b600061245061244b8461240c565b6123f1565b9050808382526020820190506020840283018581111561247357612472612438565b5b835b8181101561249c578061248888826120cb565b845260208401935050602081019050612475565b5050509392505050565b600082601f8301126124bb576124ba61238c565b5b81356124cb84826020860161243d565b91505092915050565b600080fd5b600067ffffffffffffffff8211156124f4576124f3612391565b5b6124fd82612278565b9050602081019050919050565b82818337600083830152505050565b600061252c612527846124d9565b6123f1565b905082815260208101848484011115612548576125476124d4565b5b61255384828561250a565b509392505050565b600082601f8301126125705761256f61238c565b5b8135612580848260208601612519565b91505092915050565b600080600080600060a086880312156125a5576125a4612042565b5b60006125b388828901612095565b95505060206125c488828901612095565b945050604086013567ffffffffffffffff8111156125e5576125e4612047565b5b6125f1888289016124a6565b935050606086013567ffffffffffffffff81111561261257612611612047565b5b61261e888289016124a6565b925050608086013567ffffffffffffffff81111561263f5761263e612047565b5b61264b8882890161255b565b9150509295509295909350565b6000819050919050565b600061267d6126786126738461204c565b612658565b61204c565b9050919050565b600061268f82612662565b9050919050565b60006126a182612684565b9050919050565b6126b181612696565b82525050565b60006020820190506126cc60008301846126a8565b92915050565b600067ffffffffffffffff8211156126ed576126ec612391565b5b602082029050602081019050919050565b600061271161270c846126d2565b6123f1565b9050808382526020820190506020840283018581111561273457612733612438565b5b835b8181101561275d57806127498882612095565b845260208401935050602081019050612736565b5050509392505050565b600082601f83011261277c5761277b61238c565b5b813561278c8482602086016126fe565b91505092915050565b600080604083850312156127ac576127ab612042565b5b600083013567ffffffffffffffff8111156127ca576127c9612047565b5b6127d685828601612767565b925050602083013567ffffffffffffffff8111156127f7576127f6612047565b5b612803858286016124a6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006128458383612333565b60208301905092915050565b6000602082019050919050565b60006128698261280d565b6128738185612818565b935061287e83612829565b8060005b838110156128af5781516128968882612839565b97506128a183612851565b925050600181019050612882565b5085935050505092915050565b600060208201905081810360008301526128d6818461285e565b905092915050565b6000602082840312156128f4576128f3612042565b5b600061290284828501612095565b91505092915050565b6129148161206c565b82525050565b600060208201905061292f600083018461290b565b92915050565b61293e816121cf565b811461294957600080fd5b50565b60008135905061295b81612935565b92915050565b6000806040838503121561297857612977612042565b5b600061298685828601612095565b92505060206129978582860161294c565b9150509250929050565b600080604083850312156129b8576129b7612042565b5b60006129c685828601612095565b92505060206129d785828601612095565b9150509250929050565b60006129ec82612684565b9050919050565b6129fc816129e1565b82525050565b6000602082019050612a1760008301846129f3565b92915050565b600080600080600060a08688031215612a3957612a38612042565b5b6000612a4788828901612095565b9550506020612a5888828901612095565b9450506040612a69888289016120cb565b9350506060612a7a888289016120cb565b925050608086013567ffffffffffffffff811115612a9b57612a9a612047565b5b612aa78882890161255b565b9150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612afb57607f821691505b602082108103612b0e57612b0d612ab4565b5b50919050565b6000604082019050612b29600083018561290b565b612b36602083018461290b565b9392505050565b6000604082019050612b526000830185612120565b612b5f6020830184612120565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bcf826120aa565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c0157612c00612b95565b5b600182019050919050565b6000604082019050612c21600083018561290b565b612c2e6020830184612120565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60098110612ca157612ca0612c35565b5b50565b6000819050612cb282612c90565b919050565b6000612cc282612ca4565b9050919050565b612cd281612cb7565b82525050565b6000612ce48383612cc9565b60208301905092915050565b6000602082019050919050565b6000612d0882612c64565b612d128185612c6f565b9350612d1d83612c80565b8060005b83811015612d4e578151612d358882612cd8565b9750612d4083612cf0565b925050600181019050612d21565b5085935050505092915050565b6000606082019050612d70600083018661290b565b8181036020830152612d828185612cfd565b90508181036040830152612d96818461285e565b9050949350505050565b7f43616e6e6f74207472616e736665722043726170707920536b696e7300000000600082015250565b6000612dd6601c8361223d565b9150612de182612da0565b602082019050919050565b60006020820190508181036000830152612e0581612dc9565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000612e3382612e0c565b612e3d8185612e17565b9350612e4d81856020860161224e565b612e5681612278565b840191505092915050565b600060a082019050612e76600083018861290b565b612e83602083018761290b565b612e906040830186612120565b612e9d6060830185612120565b8181036080830152612eaf8184612e28565b90509695505050505050565b600081519050612eca81612176565b92915050565b600060208284031215612ee657612ee5612042565b5b6000612ef484828501612ebb565b91505092915050565b600060a082019050612f12600083018861290b565b612f1f602083018761290b565b8181036040830152612f31818661285e565b90508181036060830152612f45818561285e565b90508181036080830152612f598184612e28565b90509695505050505050565b6000608082019050612f7a600083018761290b565b612f876020830186612120565b612f946040830185612120565b612fa16060830184612120565b95945050505050565b6000612fb5826120aa565b9150612fc0836120aa565b9250828201905080821115612fd857612fd7612b95565b5b92915050565b60006040820190508181036000830152612ff8818561285e565b9050818103602083015261300c818461285e565b9050939250505056fea26469706673582212201baea601d227a1cab1b1a2dd2600e48b53777a4d44d931422ea07195e64ede2864736f6c634300081500330000000000000000000000003d6127b92871136c345ac0918a61ab5a253d760f0000000000000000000000008e746e48641e8f9a7713c3c06e526dbe20590dd2