5 txs
8 calls
constructor
constructor()
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
brightPunkColors
viewfunction brightPunkColors(uint256) view returns (uint16 h, uint8 s, uint8 v, uint8 classIdx)
colorsVisiblyDifferent
purefunction colorsVisiblyDifferent(tuple color1, tuple color2) pure returns (bool)
contractSealed
viewfunction contractSealed() view returns (bool)
costPerToken
viewfunction costPerToken() view returns (uint256)
darkPunkColors
viewfunction darkPunkColors(uint256) view returns (uint16 h, uint8 s, uint8 v, uint8 classIdx)
exists
viewfunction exists(uint256 tokenId) view returns (bool)
externalLink
viewfunction externalLink() view returns (bytes)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getColors
viewfunction getColors(bytes seed, uint8 darkMode) view returns (tuple[7] colors)
getOriginalColors
purefunction getOriginalColors(uint256 darkMode) pure returns (tuple[7] colors)
getTokenTitleAtIndex
viewfunction getTokenTitleAtIndex(uint256 index) view returns (string)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isMintActive
viewfunction isMintActive() view returns (bool)
maxPerTx
viewfunction maxPerTx() view returns (uint256)
maxSupply
viewfunction maxSupply() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
PFPContract
viewfunction PFPContract() view returns (address)
sideLength
viewfunction sideLength() view returns (uint8)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
svgCSS
viewfunction svgCSS() view returns (address)
svgDefs
viewfunction svgDefs() view returns (address)
symbol
viewfunction symbol() view returns (string)
tokenImage
viewfunction tokenImage(uint256 tokenId) view returns (string)
tokenImageWithMetadata
viewfunction tokenImageWithMetadata(uint256 tokenId, bool renderSingle, uint256 rowIdx, uint256 colIdx) view returns (bytes svg, uint256[2] squareCounts, bool pfpBrightMode)
tokenURI
viewfunction tokenURI(uint256 id) view returns (string)
totalMintCost
viewfunction totalMintCost(uint256 numTokens, address minter) view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
walletOfOwner
viewfunction walletOfOwner(address _owner) view returns (uint256[])
approve
nonpayablefunction approve(address to, uint256 tokenId)
flipMintState
nonpayablefunction flipMintState()
mintMarilyn
payablefunction mintMarilyn(address toAddress, uint256 numTokens) payable
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
sealContract
nonpayablefunction sealContract()
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setPFPContract
nonpayablefunction setPFPContract(address contractAddress)
setPunkColors
nonpayablefunction setPunkColors(uint16[] hues, uint8[] sats, uint8[] values, uint8[] brightOrDark)
setSideLength
nonpayablefunction setSideLength(uint8 _sideLength)
setSvgData
nonpayablefunction setSvgData(string _css, string _svgDefs)
setTokenTitles
nonpayablefunction setTokenTitles(string _tokenTitles)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
ApprovalToCurrentOwner
error ApprovalToCurrentOwner()
ApproveToCaller
error ApproveToCaller()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
InvalidCodeAtRange
error InvalidCodeAtRange(uint256 _size, uint256 _start, uint256 _end)
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
WriteError
error WriteError()
creation bytecode
0x60806040526009805462ff00001916620500001790553480156200002257600080fd5b506040518060400160405280601381526020017f4f43204d6172696c796e20446970747963687300000000000000000000000000815250604051806040016040528060088152602001674d4152494c594e5360c01b815250620000946200008e620000cd60201b60201c565b620000d1565b8151620000a990600390602085019062000121565b508051620000bf90600490602084019062000121565b50506000600155506200020d565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200012f90620001dd565b90600052602060002090601f0160209004810192826200015357600085556200019e565b82601f106200016e57805160ff19168380011785556200019e565b828001600101855582156200019e579182015b828111156200019e57825182559160200191906001019062000181565b50620001ac929150620001b0565b5090565b5b80821115620001ac5760008155600101620001b1565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620001f257607f821691505b602082108103620002075762000207620001c7565b50919050565b614a20806200021d6000396000f3fe6080604052600436106102885760003560e01c806370a082311161015a578063b88d4fde116100c1578063e972ae591161007a578063e972ae59146107c2578063e985e9c5146107e2578063efa2be871461082b578063f2fde38b1461084b578063f968adbe1461086b578063f9be2abf1461088057600080fd5b8063b88d4fde1461070c578063c0b092cd1461072c578063c87b56dd1461074c578063cf3484251461076c578063d5abeb011461078c578063e2987d31146107a257600080fd5b80639eec5ba9116101135780639eec5ba914610640578063a22cb46514610660578063a48359ec14610680578063a87f30ef146106ad578063b642c8af146106cd578063b6501637146106ed57600080fd5b806370a082311461058b578063715018a6146105ab57806385070741146105c05780638da5cb5b146105e05780638e8d4644146105fe57806395d89b411461062b57600080fd5b806342842e0e116101fe5780635b92ac0d116101b75780635b92ac0d146104d85780635b9db898146104f25780635df43d98146105075780636352211e1461052757806368bd580e146105475780637066366e1461055c57600080fd5b806342842e0e14610409578063438b6300146104295780634f558e791461045657806353d7bae71461047657806359c74f29146104a35780635ad3de0a146104b857600080fd5b806318160ddd1161025057806318160ddd1461034757806323b872dd146103695780632e475b08146103895780633ba523c7146103a95780633ccfd60b146103c45780633e2da046146103d957600080fd5b806301ffc9a71461028d57806306fdde03146102c3578063081812fc146102e55780630888b27b14610312578063095ea7b314610327575b600080fd5b34801561029957600080fd5b506102ad6102a8366004613224565b6108a0565b6040516102ba919061324f565b60405180910390f35b3480156102cf57600080fd5b506102d86108f2565b6040516102ba91906132bb565b3480156102f157600080fd5b506103056103003660046132dd565b610984565b6040516102ba9190613318565b61032561032036600461333a565b6109c8565b005b34801561033357600080fd5b5061032561034236600461333a565b610b05565b34801561035357600080fd5b50600254600154035b6040516102ba919061337d565b34801561037557600080fd5b5061032561038436600461338b565b610b8b565b34801561039557600080fd5b506103256103a43660046133ef565b610b96565b3480156103b557600080fd5b5061035c662386f26fc1000081565b3480156103d057600080fd5b50610325610c06565b3480156103e557600080fd5b506103f96103f43660046132dd565b610c3c565b6040516102ba9493929190613423565b34801561041557600080fd5b5061032561042436600461338b565b610c81565b34801561043557600080fd5b50610449610444366004613458565b610c9c565b6040516102ba91906134d6565b34801561046257600080fd5b506102ad6104713660046132dd565b610d8d565b34801561048257600080fd5b506104966104913660046135db565b610d98565b6040516102ba91906136b1565b3480156104af57600080fd5b50610325611093565b3480156104c457600080fd5b506103256104d3366004613458565b6110d1565b3480156104e457600080fd5b506009546102ad9060ff1681565b3480156104fe57600080fd5b506102d8611145565b34801561051357600080fd5b50601054610305906001600160a01b031681565b34801561053357600080fd5b506103056105423660046132dd565b611161565b34801561055357600080fd5b50610325611173565b34801561056857600080fd5b5061057c6105773660046136d3565b6111d6565b6040516102ba93929190613763565b34801561059757600080fd5b5061035c6105a6366004613458565b611a9b565b3480156105b757600080fd5b50610325611ae9565b3480156105cc57600080fd5b506103256105db3660046137e1565b611b1d565b3480156105ec57600080fd5b506000546001600160a01b0316610305565b34801561060a57600080fd5b50600b5461061e906001600160a01b031681565b6040516102ba9190613877565b34801561063757600080fd5b506102d8611c31565b34801561064c57600080fd5b50600f54610305906001600160a01b031681565b34801561066c57600080fd5b5061032561067b366004613885565b611c40565b34801561068c57600080fd5b506009546106a09062010000900460ff1681565b6040516102ba91906138b8565b3480156106b957600080fd5b5061035c6106c83660046138c6565b611cd8565b3480156106d957600080fd5b506103256106e8366004613a25565b611d1d565b3480156106f957600080fd5b506009546102ad90610100900460ff1681565b34801561071857600080fd5b50610325610727366004613ae4565b611f80565b34801561073857600080fd5b506102d86107473660046132dd565b611fca565b34801561075857600080fd5b506102d86107673660046132dd565b612129565b34801561077857600080fd5b506102d86107873660046132dd565b612159565b34801561079857600080fd5b5061035c6101f481565b3480156107ae57600080fd5b506102ad6107bd366004613bc8565b61216b565b3480156107ce57600080fd5b506103f96107dd3660046132dd565b6121d4565b3480156107ee57600080fd5b506102ad6107fd366004613bfc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b34801561083757600080fd5b506104966108463660046132dd565b6121e4565b34801561085757600080fd5b50610325610866366004613458565b612292565b34801561087757600080fd5b5061035c601481565b34801561088c57600080fd5b5061032561089b366004613c1e565b6122ee565b60006001600160e01b031982166380ac58cd60e01b14806108d157506001600160e01b03198216635b5e139f60e01b145b806108ec57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606003805461090190613c7b565b80601f016020809104026020016040519081016040528092919081815260200182805461092d90613c7b565b801561097a5780601f1061094f5761010080835404028352916020019161097a565b820191906000526020600020905b81548152906001019060200180831161095d57829003601f168201915b5050505050905090565b600061098f826123a3565b6109ac576040516333d1c03960e21b815260040160405180910390fd5b506000908152600760205260409020546001600160a01b031690565b6101f46109d86002546001540390565b6109e29083613cb7565b1115610a095760405162461bcd60e51b8152600401610a0090613d06565b60405180910390fd5b60095460ff16610a2b5760405162461bcd60e51b8152600401610a0090613d3f565b60008111610a4b5760405162461bcd60e51b8152600401610a0090613d77565b610a558133611cd8565b3414610a735760405162461bcd60e51b8152600401610a0090613db0565b333214610a925760405162461bcd60e51b8152600401610a0090613dec565b6014811115610ab35760405162461bcd60e51b8152600401610a0090613e22565b6001546000610ac1826123cf565b9050610acd8484612419565b600154825b81811015610afd576000818152600a6020526040902083905580610af581613e32565b915050610ad2565b505050505050565b6000610b1082611161565b9050806001600160a01b0316836001600160a01b031603610b445760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614610b7b57610b5e81336107fd565b610b7b576040516367d9dca160e11b815260040160405180910390fd5b610b86838383612437565b505050565b610b86838383612493565b6000546001600160a01b03163314610bc05760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff1615610be85760405162461bcd60e51b8152600401610a0090613eb5565b6009805460ff909216620100000262ff000019909216919091179055565b6000546001600160a01b03163314610c305760405162461bcd60e51b8152600401610a0090613e7e565b610c3a334761267e565b565b600d8181548110610c4c57600080fd5b60009182526020909120015461ffff8116915060ff620100008204811691630100000081048216916401000000009091041684565b610b8683838360405180602001604052806000815250611f80565b60606000610ca983611a9b565b90506000816001600160401b03811115610cc557610cc56134e7565b604051908082528060200260200182016040528015610cee578160200160208202803683370190505b5090506000805b8381108015610d0557506101f482105b15610d83576000610d15836123a3565b610d20576000610d29565b610d2983611161565b9050866001600160a01b0316816001600160a01b031603610d705782848381518110610d5757610d57613ec5565b602090810291909101015281610d6c81613e32565b9250505b82610d7a81613e32565b93505050610cf5565b5090949350505050565b60006108ec826123a3565b610da061319e565b600d54600c5460408051608081018252600080825260208201819052918101829052606081810183905291939192905b60c08601516060015160ff1660000361108857610dec85613e32565b94508785604051602001610e01929190613edb565b60405160208183030381529060405293508660ff16600103610e9357600d610e29858561271a565b81548110610e3957610e39613ec5565b600091825260209182902060408051608081018252919092015461ffff8116825260ff6201000082048116948301949094526301000000810484169282019290925264010000000090910490911660608201529050610f05565b600c610e9f858461271a565b81548110610eaf57610eaf613ec5565b600091825260209182902060408051608081018252919092015461ffff8116825260ff62010000820481169483019490945263010000008104841692820192909252640100000000909104909116606082015290505b85516060015160ff16600003610f2757808652808660035b6020020152610dd0565b60208601516060015160ff16600003610f5e57610f4c8660005b60200201518261216b565b15610f5957602086018190525b610dd0565b60408601516060015160ff16600003610f9c57610f7c866000610f41565b8015610f8e5750610f8e866001610f41565b15610f595780866002610f1d565b60808601516060015160ff1660000361103057610fba866002610f41565b8015610ff857508660ff16600114610fd3576078610fd7565b61015e5b61ffff16610ff6876003602002015151835161ffff918216911661275a565b105b80156110225750600a61102087600360200201516040015160ff16836040015160ff16612791565b115b15610f595780866004610f1d565b60a08601516060015160ff1660000361105c5761104e866002610f41565b15610f595780866005610f1d565b60c08601516060015160ff16600003610f595761107a866002610f41565b15610f595780866006610f1d565b505050505092915050565b6000546001600160a01b031633146110bd5760405162461bcd60e51b8152600401610a0090613e7e565b6009805460ff19811660ff90911615179055565b6000546001600160a01b031633146110fb5760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff16156111235760405162461bcd60e51b8152600401610a0090613eb5565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040518060600160405280603581526020016148666035913981565b600061116c826127b3565b5192915050565b6000546001600160a01b0316331461119d5760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff16156111c55760405162461bcd60e51b8152600401610a0090613eb5565b6009805461ff001916610100179055565b60606111e06131e4565b60006111eb876123a3565b6111f457600080fd5b604080516203206081019091526203204081526000602090910190815260095462010000900460ff16871561124b576112466040518060a00160405280607b81526020016147eb607b913983906128cd565b6112f1565b61126e6040518060600160405280602f81526020016147bc602f913983906128cd565b61129a61129361127f836002613efb565b61128a906018613efb565b61ffff16612912565b83906128cd565b6040805180820190915260018152600160fd1b60208201526112bd9083906128cd565b6112ce61129361128a836018613efb565b6112f16040518060600160405280602c81526020016148db602c913983906128cd565b600f5461130a90611293906001600160a01b0316612a12565b6040805180820190915260088152671e17b9ba3cb6329f60c11b60208201526113349083906128cd565b60105461134d90611293906001600160a01b0316612a12565b6000898152600a6020908152604080832054905161136e928d929101613f28565b60408051601f1981840301815291905280516020909101209050600060026101f461139a8d6064613f43565b6113a49190613f73565b6113ae9190613f73565b9050600080600b60009054906101000a90046001600160a01b03166001600160a01b03166398083ff48e6040518263ffffffff1660e01b81526004016113f4919061337d565b600060405180830381865afa158015611411573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526114399190810190614007565b905060005b8561ffff168161ffff161015611a5f5760005b61145c876002613efb565b61ffff168161ffff161015611a4e5760008761ffff168261ffff161061148c57611487866064614041565b61148e565b855b6114ba88876040516020016114a4929190613f28565b604051602081830303815290604052606461271a565b1015905060008f1580156114e457508486815181106114db576114db613ec5565b60200260200101515b6115255761152088876040516020016114fe929190613f28565b60405160208183030381529060405283611519576001610d98565b6000610d98565b61154a565b61154a8961ffff168461ffff16101561153f576001611542565b60005b60ff166121e4565b9050811561157a578861ffff168361ffff16106115755760208c0180519061157182613e32565b9052505b6115ae565b8b518c61158682613e32565b815250508861ffff168361ffff1610156115ae5760208c018051906115aa82613e32565b9052505b6115b786613e32565b95508f61166f5760408051808201909152601881527f3c67207472616e73666f726d3d227472616e736c61746528000000000000000060208201526115fd908b906128cd565b61161561160e61128a856018613efb565b8b906128cd565b604080518082019091526002815261016160f51b6020820152611639908b906128cd565b61164a61160e61128a866018613efb565b60408051808201909152600381526214911f60e91b602082015261166f908b906128cd565b8f158061169557508f801561169557508d8361ffff1614801561169557508e8461ffff16145b15611a3b57819a506116d9604051806040016040528060118152602001703c7265637420636c6173733d226267206360781b8152508b6128cd90919063ffffffff16565b6116f461160e8260005b60200201516060015160ff16612912565b604080518082019091526009815268111f1e17b932b1ba1f60b91b602082015261171f908b906128cd565b60408051808201909152601781527f3c75736520687265663d2223682220636c6173733d2263000000000000000000602082015261175e908b906128cd565b61176c61160e8260016116e3565b6040805180820190915260048152631110179f60e11b6020820152611792908b906128cd565b60408051808201909152601781527f3c75736520687265663d2223732220636c6173733d226300000000000000000060208201526117d1908b906128cd565b6117df61160e8260026116e3565b6040805180820190915260048152631110179f60e11b6020820152611805908b906128cd565b60408051808201909152601881527f3c75736520687265663d222364652220636c6173733d226300000000000000006020820152611844908b906128cd565b61185261160e8260036116e3565b6040805180820190915260048152631110179f60e11b6020820152611878908b906128cd565b60408051808201909152601881527f3c75736520687265663d22236c652220636c6173733d2263000000000000000060208201526118b7908b906128cd565b6118c561160e8260046116e3565b6040805180820190915260048152631110179f60e11b60208201526118eb908b906128cd565b60408051808201909152601781527f3c75736520687265663d22236d2220636c6173733d2263000000000000000000602082015261192a908b906128cd565b61193861160e8260056116e3565b6040805180820190915260048152631110179f60e11b602082015261195e908b906128cd565b60408051808201909152601781527f3c75736520687265663d22236c2220636c6173733d2263000000000000000000602082015261199d908b906128cd565b6119ab61160e8260066116e3565b6040805180820190915260048152631110179f60e11b60208201526119d1908b906128cd565b60408051808201909152601e81527f3c75736520687265663d22236f222066696c6c3d22626c61636b22202f3e00006020820152611a10908b906128cd565b8f611a3b576040805180820190915260048152631e17b39f60e11b6020820152611a3b908b906128cd565b505080611a4790614058565b9050611451565b50611a5881614058565b905061143e565b506040805180820190915260068152651e17b9bb339f60d11b6020820152611a889087906128cd565b8598505050505050509450945094915050565b60006001600160a01b038216611ac4576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600660205260409020546001600160401b031690565b6000546001600160a01b03163314611b135760405162461bcd60e51b8152600401610a0090613e7e565b610c3a6000612a22565b6000546001600160a01b03163314611b475760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff1615611b6f5760405162461bcd60e51b8152600401610a0090613eb5565b611bae84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a7292505050565b600f80546001600160a01b0319166001600160a01b0392909216919091179055604080516020601f8401819004810282018101909252828152611c0b918490849081908401838280828437600092019190915250612a7292505050565b601080546001600160a01b0319166001600160a01b039290921691909117905550505050565b60606004805461090190613c7b565b336001600160a01b03831603611c695760405163b06307db60e01b815260040160405180910390fd5b3360008181526008602090815260408083206001600160a01b038716808552925291829020805460ff191685151517905590519091907f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611ccc90859061324f565b60405180910390a35050565b600080546001600160a01b03166001600160a01b0316826001600160a01b031603611d05575060006108ec565b611d16662386f26fc1000084613f43565b9392505050565b6000546001600160a01b03163314611d475760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff1615611d6f5760405162461bcd60e51b8152600401610a0090613eb5565b60005b84518160ff161015611f795760006040518060800160405280878460ff1681518110611da057611da0613ec5565b602002602001015161ffff168152602001868460ff1681518110611dc657611dc6613ec5565b602002602001015160ff168152602001858460ff1681518110611deb57611deb613ec5565b602002602001015160ff168152602001836001611e089190614070565b60ff1681525090506000838360ff1681518110611e2757611e27613ec5565b602002602001015160ff161115611ed257600c805460018101825560009190915281517fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7909101805460208401516040850151606086015161ffff90951662ffffff19909316929092176201000060ff928316021764ffff000000191663010000009282169290920264ff000000001916919091176401000000009190931602919091179055611f68565b600d805460018101825560009190915281517fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5909101805460208401516040850151606086015161ffff90951662ffffff19909316929092176201000060ff928316021764ffff000000191663010000009282169290920264ff0000000019169190911764010000000091909316029190911790555b50611f7281614091565b9050611d72565b5050505050565b611f8b848484612493565b6001600160a01b0383163b15611fc457611fa784848484612ad7565b611fc4576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b6060611fd5826123a3565b611fde57600080fd5b600e54600090611ff6906001600160a01b0316612a12565b6040805160928101825260728152600060209182018181528351808501855260018152601f60fa1b818501529351949550939092612036929091016140c9565b604051602081830303815290604052805190602001209050600085602e61205d9190613f43565b90505b61206b866001613cb7565b61207690602e613f43565b811015610d8357600084828151811061209157612091613ec5565b602001015160f81c60f81b6040516020016120ac91906140e5565b6040516020818303038152906040528051906020012090508281036120d15750610d83565b6121188583815181106120e6576120e6613ec5565b602001015160f81c60f81b60405160200161210191906140e5565b60408051601f1981840301815291905285906128cd565b5061212281613e32565b9050612060565b6060612134826123a3565b6121505760405162461bcd60e51b8152600401610a0090614125565b6108ec82612bc2565b60606000610d838360008060006111d6565b60006019612187846040015160ff16846040015160ff16612791565b11806121aa5750605a6121a8846020015160ff16846020015160ff16612791565b115b80611d16575060196121cc846000015161ffff16846000015161ffff16612791565b119392505050565b600c8181548110610c4c57600080fd5b6121ec61319e565b81600003612242578051606760609182015260208201516061908201526040820151606490820152808201516066908201526080820151810181905260a082015160659082015260c08201516063910152919050565b8051606860609182015260208201516069908201526040820151606a9082015280820151606b908201526080820151606c9082015260a0820151606d9082015260c0820151606e9101525b919050565b6000546001600160a01b031633146122bc5760405162461bcd60e51b8152600401610a0090613e7e565b6001600160a01b0381166122e25760405162461bcd60e51b8152600401610a009061417b565b6122eb81612a22565b50565b6000546001600160a01b031633146123185760405162461bcd60e51b8152600401610a0090613e7e565b600954610100900460ff16156123405760405162461bcd60e51b8152600401610a0090613eb5565b61237f82828080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a7292505050565b600e80546001600160a01b0319166001600160a01b03929092169190911790555050565b6000600154821080156108ec575050600090815260056020526040902054600160e01b900460ff161590565b600080823a4342446123e2600184614041565b40306040516020016123fa979695949392919061418b565b60408051601f1981840301815291905280516020909101209392505050565b612433828260405180602001604052806000815250612d68565b5050565b60008281526007602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600061249e826127b3565b9050836001600160a01b031681600001516001600160a01b0316146124d55760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b03861614806124f357506124f385336107fd565b8061250e57503361250384610984565b6001600160a01b0316145b90508061252e57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661255557604051633a954ecd60e21b815260040160405180910390fd5b61256160008487612437565b6001600160a01b038581166000908152600660209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600590945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661263557600154821461263557805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611f79565b8047101561269e5760405162461bcd60e51b8152600401610a0090614227565b6000826001600160a01b0316826040516126b790614237565b60006040518083038185875af1925050503d80600081146126f4576040519150601f19603f3d011682016040523d82523d6000602084013e6126f9565b606091505b5050905080610b865760405162461bcd60e51b8152600401610a0090614299565b6000808360405160200161272e91906132bb565b60408051601f198184030181529190528051602090910120905061275283826142a9565b949350505050565b6000806127678484612791565b9050600061277782610168614041565b90508082106127865780612788565b815b95945050505050565b60008183116127a9576127a48383614041565b611d16565b611d168284614041565b6040805160608101825260008082526020820181905291810191909152816001548110156128b457600081815260056020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906128b25780516001600160a01b031615612849579392505050565b5060001901600081815260056020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff16151592810192909252156128ad579392505050565b612849565b505b604051636f96cda160e11b815260040160405180910390fd5b601f1982015182518251603f199092019182906128ea9083613cb7565b11156129085760405162461bcd60e51b8152600401610a0090614301565b611fc48484612f2e565b6060816000036129395750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612963578061294d81613e32565b915061295c9050600a83613f73565b915061293d565b6000816001600160401b0381111561297d5761297d6134e7565b6040519080825280601f01601f1916602001820160405280156129a7576020820181803683370190505b5090505b8415612752576129bc600183614041565b91506129c9600a866142a9565b6129d4906030613cb7565b60f81b8183815181106129e9576129e9613ec5565b60200101906001600160f81b031916908160001a905350612a0b600a86613f73565b94506129ab565b60606108ec826001600019612f64565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080612a9d83604051602001612a89919061431b565b60405160208183030381529060405261300e565b90508051602082016000f091506001600160a01b038216612ad15760405163046a55db60e11b815260040160405180910390fd5b50919050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290612b0c903390899088908890600401614332565b6020604051808303816000875af1925050508015612b47575060408051601f3d908101601f19168201909252612b4491810190614381565b60015b612ba5573d808015612b75576040519150601f19603f3d011682016040523d82523d6000602084013e612b7a565b606091505b508051600003612b9d576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6060600080612bd58460008060006111d6565b50600b54604051630d40a5a360e11b81529294509092506000916001600160a01b0390911690631a814b4690612c0f90889060040161337d565b602060405180830381865afa158015612c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c5091906143ad565b60095490915062010000900460ff166000612c6c826002613f43565b612c769083613f43565b8451909150600090612c889083614041565b90506000612c9589611fca565b9050612d3b8160405180610120016040528060e4815260200161490760e49139612cbe8a61303a565b60405180606001604052806035815260200161486660359139612ce18651612912565b612cea8b612912565b612cf389612912565b612d048e60005b6020020151612912565b612d0f8f6001612cfa565b604051602001612d2799989796959493929190614464565b60405160208183030381529060405261303a565b604051602001612d4b9190614726565b604051602081830303815290604052975050505050505050919050565b6001546001600160a01b038416612d9157604051622e076360e81b815260040160405180910390fd5b82600003612db25760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260066020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600590925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15612eda575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4612ea36000878480600101955087612ad7565b612ec0576040516368d2bf6b60e11b815260040160405180910390fd5b808210612e58578260015414612ed557600080fd5b612f1f565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4808210612edb575b50600155611fc4600085838684565b8051602082019150808201602084510184015b81841015612f59578351815260209384019301612f41565b505082510190915250565b6060833b6000819003612f87575050604080516020810190915260008152611d16565b80841115612fa5575050604080516020810190915260008152611d16565b83831015612fcc5780848460405163162544fd60e11b8152600401610a0093929190614731565b8383038482036000828210612fe15782612fe3565b815b60408051603f8301601f19168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001613024929190614782565b6040516020818303038152906040529050919050565b6060815160000361305957505060408051602081019091526000815290565b600060405180606001604052806040815260200161489b60409139905060006003845160026130889190613cb7565b6130929190613f73565b61309d906004613f43565b905060006130ac826020613cb7565b6001600160401b038111156130c3576130c36134e7565b6040519080825280601f01601f1916602001820160405280156130ed576020820181803683370190505b509050818152600183018586518101602084015b81831015613159576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101613101565b600389510660018114613173576002811461318457613190565b613d3d60f01b600119830152613190565b603d60f81b6000198301525b509398975050505050505050565b6040518060e001604052806007905b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816131ad5790505090565b60405180604001604052806002906020820280368337509192915050565b6001600160e01b031981165b81146122eb57600080fd5b80356108ec81613202565b60006020828403121561323957613239600080fd5b60006127528484613219565b8015155b82525050565b602081016108ec8284613245565b60005b83811015613278578181015183820152602001613260565b83811115611fc45750506000910152565b6000613293825190565b8084526020840193506132aa81856020860161325d565b601f01601f19169290920192915050565b60208082528101611d168184613289565b8061320e565b80356108ec816132cc565b6000602082840312156132f2576132f2600080fd5b600061275284846132d2565b60006001600160a01b0382166108ec565b613249816132fe565b602081016108ec828461330f565b61320e816132fe565b80356108ec81613326565b6000806040838503121561335057613350600080fd5b600061335c858561332f565b925050602061336d858286016132d2565b9150509250929050565b80613249565b602081016108ec8284613377565b6000806000606084860312156133a3576133a3600080fd5b60006133af868661332f565b93505060206133c08682870161332f565b92505060406133d1868287016132d2565b9150509250925092565b60ff811661320e565b80356108ec816133db565b60006020828403121561340457613404600080fd5b600061275284846133e4565b61ffff8116613249565b60ff8116613249565b608081016134318287613410565b61343e602083018661341a565b61344b604083018561341a565b612788606083018461341a565b60006020828403121561346d5761346d600080fd5b6000612752848461332f565b60006134858383613377565b505060200190565b6000613497825190565b80845260209384019383018060005b838110156134cb5781516134ba8882613479565b9750602083019250506001016134a6565b509495945050505050565b60208082528101611d16818461348d565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b0382111715613522576135226134e7565b6040525050565b600061353460405190565b905061228d82826134fd565b60006001600160401b03821115613559576135596134e7565b601f19601f83011660200192915050565b82818337506000910152565b600061358961358484613540565b613529565b9050828152602081018484840111156135a4576135a4600080fd5b6135af84828561356a565b509392505050565b600082601f8301126135cb576135cb600080fd5b8135612752848260208601613576565b600080604083850312156135f1576135f1600080fd5b82356001600160401b0381111561360a5761360a600080fd5b613616858286016135b7565b925050602061336d858286016133e4565b805160808301906136388482613410565b50602082015161364b602085018261341a565b50604082015161365e604085018261341a565b506060820151611fc4606085018261341a565b600061367d8383613627565b505060800190565b6007818060005b83811015610afd5781516136a08782613671565b96506020830192505060010161368c565b61038081016108ec8284613685565b80151561320e565b80356108ec816136c0565b600080600080608085870312156136ec576136ec600080fd5b60006136f887876132d2565b9450506020613709878288016136c8565b935050604061371a878288016132d2565b925050606061372b878288016132d2565b91505092959194509250565b6002818060005b83811015610afd5781516137528782613479565b96506020830192505060010161373e565b608080825281016137748186613289565b90506137836020830185613737565b6127526060830184613245565b60008083601f8401126137a5576137a5600080fd5b5081356001600160401b038111156137bf576137bf600080fd5b6020830191508360018202830111156137da576137da600080fd5b9250929050565b600080600080604085870312156137fa576137fa600080fd5b84356001600160401b0381111561381357613813600080fd5b61381f87828801613790565b945094505060208501356001600160401b0381111561384057613840600080fd5b61384c87828801613790565b95989497509550505050565b60006108ec826132fe565b60006108ec82613858565b61324981613863565b602081016108ec828461386e565b6000806040838503121561389b5761389b600080fd5b60006138a7858561332f565b925050602061336d858286016136c8565b602081016108ec828461341a565b600080604083850312156138dc576138dc600080fd5b60006138e885856132d2565b925050602061336d8582860161332f565b60006001600160401b03821115613912576139126134e7565b5060209081020190565b61ffff811661320e565b80356108ec8161391c565b600061393f613584846138f9565b8381529050602080820190840283018581111561395e5761395e600080fd5b835b8181101561398257806139738882613926565b84525060209283019201613960565b5050509392505050565b600082601f8301126139a0576139a0600080fd5b8135612752848260208601613931565b60006139be613584846138f9565b838152905060208082019084028301858111156139dd576139dd600080fd5b835b8181101561398257806139f288826133e4565b845250602092830192016139df565b600082601f830112613a1557613a15600080fd5b81356127528482602086016139b0565b60008060008060808587031215613a3e57613a3e600080fd5b84356001600160401b03811115613a5757613a57600080fd5b613a638782880161398c565b94505060208501356001600160401b03811115613a8257613a82600080fd5b613a8e87828801613a01565b93505060408501356001600160401b03811115613aad57613aad600080fd5b613ab987828801613a01565b92505060608501356001600160401b03811115613ad857613ad8600080fd5b61372b87828801613a01565b60008060008060808587031215613afd57613afd600080fd5b6000613b09878761332f565b9450506020613b1a8782880161332f565b9350506040613b2b878288016132d2565b92505060608501356001600160401b03811115613b4a57613b4a600080fd5b61372b878288016135b7565b600060808284031215613b6b57613b6b600080fd5b613b756080613529565b90506000613b838484613926565b8252506020613b94848483016133e4565b6020830152506040613ba8848285016133e4565b6040830152506060613bbc848285016133e4565b60608301525092915050565b6000806101008385031215613bdf57613bdf600080fd5b6000613beb8585613b56565b925050608061336d85828601613b56565b60008060408385031215613c1257613c12600080fd5b60006138e8858561332f565b60008060208385031215613c3457613c34600080fd5b82356001600160401b03811115613c4d57613c4d600080fd5b613c5985828601613790565b92509250509250929050565b634e487b7160e01b600052602260045260246000fd5b600281046001821680613c8f57607f821691505b602082108103612ad157612ad1613c65565b634e487b7160e01b600052601160045260246000fd5b60008219821115613cca57613cca613ca1565b500190565b601d81526000602082017f4d6172696c796e20737570706c79206c696d697420726561636865642e000000815291505b5060200190565b602080825281016108ec81613ccf565b60128152600060208201714d696e74206973206e6f742061637469766560701b81529150613cff565b602080825281016108ec81613d16565b60118152600060208201704d696e74206174206c65617374206f6e6560781b81529150613cff565b602080825281016108ec81613d4f565b60128152600060208201711399595908195e1858dd081c185e5b595b9d60721b81529150613cff565b602080825281016108ec81613d87565b601581526000602082017410dbdb9d1c9858dd1cc818d85b9b9bdd081b5a5b9d605a1b81529150613cff565b602080825281016108ec81613dc0565b600f81526000602082016e546f6f206d616e7920746f6b656e7360881b81529150613cff565b602080825281016108ec81613dfc565b60006000198203613e4557613e45613ca1565b5060010190565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000613cff565b602080825281016108ec81613e4c565b601081526000602082016f21b7b73a3930b1ba1039b2b0b632b21760811b81529150613cff565b602080825281016108ec81613e8e565b634e487b7160e01b600052603260045260246000fd5b60408082528101613eec8185613289565b9050611d166020830184613377565b600061ffff8216915061ffff831692508161ffff0483118215151615613f2357613f23613ca1565b500290565b60408101613f368285613377565b611d166020830184613377565b6000816000190483118215151615613f2357613f23613ca1565b634e487b7160e01b600052601260045260246000fd5b600082613f8257613f82613f5d565b500490565b80516108ec816136c0565b6000613fa0613584846138f9565b83815290506020808201908402830185811115613fbf57613fbf600080fd5b835b818110156139825780613fd48882613f87565b84525060209283019201613fc1565b600082601f830112613ff757613ff7600080fd5b8151612752848260208601613f92565b60006020828403121561401c5761401c600080fd5b81516001600160401b0381111561403557614035600080fd5b61275284828501613fe3565b60008282101561405357614053613ca1565b500390565b61ffff16600061fffe198201613e4557613e45613ca1565b600060ff8216915060ff831692508260ff03821115613cca57613cca613ca1565b60ff16600060fe198201613e4557613e45613ca1565b60006140b1825190565b6140bf81856020860161325d565b9290920192915050565b6000611d1682846140a7565b6001600160f81b03198116613249565b60006140f182846140d5565b50600101919050565b6014815260006020820173151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b81529150613cff565b602080825281016108ec816140fa565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291505b5060400190565b602080825281016108ec81614135565b60e08101614199828a613377565b6141a66020830189613377565b6141b36040830188613377565b6141c06060830187613377565b6141cd6080830186613377565b6141da60a0830185613377565b6141e760c083018461330f565b98975050505050505050565b601d81526000602082017f416464726573733a20696e73756666696369656e742062616c616e636500000081529150613cff565b602080825281016108ec816141f3565b6000816108ec565b603a81526000602082017f416464726573733a20756e61626c6520746f2073656e642076616c75652c207281527f6563697069656e74206d6179206861766520726576657274656400000000000060208201529150614174565b602080825281016108ec8161423f565b6000826142b8576142b8613f5d565b500690565b602781526000602082017f44796e616d69634275666665723a20417070656e64696e67206f7574206f66208152663137bab732399760c91b60208201529150614174565b602080825281016108ec816142bd565b6000808252613e45565b600061432682614311565b9150611d1682846140a7565b60808101614340828761330f565b61434d602083018661330f565b61435a6040830185613377565b818103606083015261436c8184613289565b9695505050505050565b80516108ec81613202565b60006020828403121561439657614396600080fd5b60006127528484614376565b80516108ec816132cc565b6000602082840312156143c2576143c2600080fd5b600061275284846143a2565b607b60f81b81526000613e45565b7f2274726169745f74797065223a20225469746c65204c656e677468222c000000815260005b50601d0190565b601160f91b81526000613e45565b627d2c7b60e81b815260005b5060030190565b7f2274726169745f74797065223a20224461726b2053717561726573222c00000081526000614402565b627d5d7d60e81b81526000614423565b600061446f826143ce565b66113730b6b2911d60c91b8152600701915061448b828c6140a7565b6f16113232b9b1b934b83a34b7b7111d1160811b815260100191506144b0828b6140a7565b7f222c22696d6167655f64617461223a22646174613a696d6167652f7376672b788152691b5b0ed8985cd94d8d0b60b21b6020820152602a0191506144f5828a6140a7565b7111161132bc3a32b93730b62fbab936111d1160711b8152601201915061451c82896140a7565b70222c2261747472696275746573223a205b60781b81526011019150614541826143ce565b915061454c826143dc565b69113b30b63ab2911d101160b11b8152600a01915061456b82886140a7565b915061457682614409565b915061458182614417565b7f2274726169745f74797065223a20224f43204d6172696c796e2050465073204d8152661a5b9d1959088b60ca1b602082015269113b30b63ab2911d101160b11b602782015260310191506145d682876140a7565b91506145e182614409565b91506145ec82614417565b7f2274726169745f74797065223a20224272696768742053717561726573222c00815269113b30b63ab2911d101160b11b601f820152602901915061463182866140a7565b915061463c82614409565b915061464782614417565b91506146528261442a565b69113b30b63ab2911d101160b11b8152600a01915061467182856140a7565b915061467c82614409565b915061468782614417565b7f2274726169745f74797065223a202243726f73736f7665722053717561726573815261088b60f21b602082015269113b30b63ab2911d101160b11b6022820152602c0191506146d782846140a7565b91506146e282614409565b91506146ed82614454565b9b9a5050505050505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000614402565b6000614326826146fc565b6060810161473f8286613377565b61474c6020830185613377565b6127526040830184613377565b606360f81b81526000613e45565b60006108ec8260e01b90565b61324963ffffffff8216614767565b600061478d82614759565b91506147998285614773565b6880600e6000396000f360b81b6004830152600d9091019061275282846140a756fe3c7376672073686170652d72656e646572696e673d2263726973704564676573222076696577426f783d22302030203c7376672077696474683d223132303022206865696768743d2231323030222073686170652d72656e646572696e673d2263726973704564676573222076696577426f783d223020302032342032342220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c7374796c653e68747470733a2f2f63617073756c6532312e636f6d2f636f6c6c656374696f6e732f6f632d6d6172696c796e2d64697074796368734142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f2220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f737667223e3c7374796c653e4f6e65206f662035303020416e647920576172686f6c2d696e737069726564204d6172696c796e204d6f6e726f652044697074796368732c20656163682072616e646f6d6c792067656e657261746564206174206d696e74207573696e67206f6e6c7920636f6c6f72732066726f6d207468652043727970746f50756e6b7320636f6c6c656374696f6e2e5c6e5c6e4561636820446970747963682069732073746f7265642031303025206f6e2d636861696e2e20496e646976696475616c204d6172696c796e732063616e20616c736f206265206d696e74656420617320504650732ea26469706673582212208725709be66a462b9ca1cc9d9c8c81186a36cf9467ba9d3152293702c7dc3ac264736f6c634300080d0033