0 txs
1 call
constructor
constructor(address _defaultAdmin, string _name, string _symbol, address _saleRecipient, uint256 _transactionFee, address _royaltyRecipient, uint128 _royaltyBps)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
batchFrozen
viewfunction batchFrozen(uint256) view returns (bool)
claimCondition
viewfunction claimCondition() view returns (uint256 currentStartId, uint256 count)
contractType
purefunction contractType() pure returns (bytes32)
contractURI
viewfunction contractURI() view returns (string)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
encryptDecrypt
purefunction encryptDecrypt(bytes data, bytes key) pure returns (bytes result)
encryptedData
viewfunction encryptedData(uint256) view returns (bytes)
explicitOwnershipOf
viewfunction explicitOwnershipOf(uint256 tokenId) view returns (tuple)
explicitOwnershipsOf
viewfunction explicitOwnershipsOf(uint256[] tokenIds) view returns (tuple[])
getActiveClaimConditionId
viewfunction getActiveClaimConditionId() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getBaseURICount
viewfunction getBaseURICount() view returns (uint256)
getBatchIdAtIndex
viewfunction getBatchIdAtIndex(uint256 _index) view returns (uint256)
getClaimConditionById
viewfunction getClaimConditionById(uint256 _conditionId) view returns (tuple condition)
getDefaultRoyaltyInfo
viewfunction getDefaultRoyaltyInfo() view returns (address, uint16)
getRevealURI
viewfunction getRevealURI(uint256 _batchId, bytes _key) view returns (string revealedURI)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address member)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256 count)
getRoyaltyInfoForToken
viewfunction getRoyaltyInfoForToken(uint256 _tokenId) view returns (address, uint16)
getSupplyClaimedByWallet
viewfunction getSupplyClaimedByWallet(uint256 _conditionId, address _claimer) view returns (uint256 supplyClaimedByWallet)
getTransactionFee
viewfunction getTransactionFee() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
hasRoleWithSwitch
viewfunction hasRoleWithSwitch(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isApprovedOrOwner
viewfunction isApprovedOrOwner(address _operator, uint256 _tokenId) view returns (bool isApprovedOrOwnerOf)
isEncryptedBatch
viewfunction isEncryptedBatch(uint256 _batchId) view returns (bool)
maxTotalSupply
viewfunction maxTotalSupply() view returns (uint256)
name
viewfunction name() view returns (string)
nextTokenIdToClaim
viewfunction nextTokenIdToClaim() view returns (uint256)
nextTokenIdToMint
viewfunction nextTokenIdToMint() view returns (uint256)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
platformAddress
viewfunction platformAddress() view returns (address)
primarySaleRecipient
viewfunction primarySaleRecipient() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 royaltyAmount)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokensOfOwner
viewfunction tokensOfOwner(address owner) view returns (uint256[])
tokensOfOwnerIn
viewfunction tokensOfOwnerIn(address owner, uint256 start, uint256 stop) view returns (uint256[])
tokenURI
viewfunction tokenURI(uint256 _tokenId) view returns (string)
totalMinted
viewfunction totalMinted() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
transactionFee
viewfunction transactionFee() view returns (uint256)
verifyClaim
viewfunction verifyClaim(uint256 _conditionId, address _claimer, uint256 _quantity, address _currency, uint256 _pricePerToken, tuple _allowlistProof) view returns (bool isOverride)
approve
nonpayablefunction approve(address to, uint256 tokenId)
batchMintTo
nonpayablefunction batchMintTo(address _to, uint256 _quantity, string _baseURI, bytes _data)
burn
nonpayablefunction burn(uint256 _tokenId)
claim
payablefunction claim(address _receiver, uint256 _quantity, address _currency, uint256 _pricePerToken, tuple _allowlistProof, bytes _data) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
lazyMint
nonpayablefunction lazyMint(uint256 _amount, string _baseURIForTokens, bytes _data) returns (uint256 batchId)
mintTo
nonpayablefunction mintTo(address _to, string _tokenURI)
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
reveal
nonpayablefunction reveal(uint256 _index, bytes _key) returns (string revealedURI)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setClaimConditions
nonpayablefunction setClaimConditions(tuple[] _conditions, bool _resetClaimEligibility)
setContractURI
nonpayablefunction setContractURI(string _uri)
setDefaultRoyaltyInfo
nonpayablefunction setDefaultRoyaltyInfo(address _royaltyRecipient, uint256 _royaltyBps)
setMaxTotalSupply
nonpayablefunction setMaxTotalSupply(uint256 _maxTotalSupply)
setOwner
nonpayablefunction setOwner(address _newOwner)
setPrimarySaleRecipient
nonpayablefunction setPrimarySaleRecipient(address _saleRecipient)
setRoyaltyInfoForToken
nonpayablefunction setRoyaltyInfoForToken(uint256 _tokenId, address _recipient, uint256 _bps)
setTransactionFee
nonpayablefunction setTransactionFee(uint256 _transactionFee)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
ClaimConditionsUpdated
event ClaimConditionsUpdated((uint256 startTimestamp, uint256 maxClaimableSupply, uint256 supplyClaimed, uint256 quantityLimitPerWallet, bytes32 merkleRoot, uint256 pricePerToken, address currency, string metadata)[] claimConditions, bool resetEligibility)
ContractURIUpdated
event ContractURIUpdated(string prevURI, string newURI)
DefaultRoyalty
event DefaultRoyalty(address indexed newRoyaltyRecipient, uint256 newRoyaltyBps)
MaxTotalSupplyUpdated
event MaxTotalSupplyUpdated(uint256 maxTotalSupply)
MetadataFrozen
event MetadataFrozen()
OwnerUpdated
event OwnerUpdated(address indexed prevOwner, address indexed newOwner)
PrimarySaleRecipientUpdated
event PrimarySaleRecipientUpdated(address indexed recipient)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
RoyaltyForToken
event RoyaltyForToken(uint256 indexed tokenId, address indexed royaltyRecipient, uint256 royaltyBps)
TokensClaimed
event TokensClaimed(uint256 indexed claimConditionIndex, address indexed claimer, address indexed receiver, uint256 startTokenId, uint256 quantityClaimed)
TokensLazyMinted
event TokensLazyMinted(uint256 indexed startTokenId, uint256 endTokenId, string baseURI, bytes encryptedBaseURI)
TokenURIRevealed
event TokenURIRevealed(uint256 indexed index, string revealedURI)
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()
InvalidQueryRange
error InvalidQueryRange()
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
TrxErrorAuth
error TrxErrorAuth()
TrxErrorFee1
error TrxErrorFee1()
TrxErrorFee2
error TrxErrorFee2()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x6080604052601280546001600160a01b031916734ec431790805909b0d3dcf5c8da25fcbf46e93f81790553480156200003757600080fd5b5060405162006392380380620063928339810160408190526200005a91620004e5565b8686868484838360026200006f838262000645565b5060036200007e828262000645565b5050600080555062000090856200018a565b620000a5826001600160801b038316620001dc565b505050505060008311620000f25760405162461bcd60e51b815260206004820152600f60248201526e215472616e73616374696f6e46656560881b60448201526064015b60405180910390fd5b7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66200014160008a62000284565b6200014d818a62000284565b62000159828a62000284565b6200016682600062000284565b6200017186620002a0565b601c91909155601d555050601355506200073992505050565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b612710811115620002225760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b6044820152606401620000e9565b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b62000290828262000336565b6200029c828262000391565b5050565b6001600160a01b038116620002ec5760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401620000e9565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b60008281526015602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600082815260176020526040812080549160019190620003b2838562000711565b9091555050600092835260176020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b80516001600160a01b03811681146200041857600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200044557600080fd5b81516001600160401b03808211156200046257620004626200041d565b604051601f8301601f19908116603f011681019082821181831017156200048d576200048d6200041d565b8160405283815260209250866020858801011115620004ab57600080fd5b600091505b83821015620004cf5785820183015181830184015290820190620004b0565b6000602085830101528094505050505092915050565b600080600080600080600060e0888a0312156200050157600080fd5b6200050c8862000400565b60208901519097506001600160401b03808211156200052a57600080fd5b620005388b838c0162000433565b975060408a01519150808211156200054f57600080fd5b506200055e8a828b0162000433565b9550506200056f6060890162000400565b9350608088015192506200058660a0890162000400565b60c08901519092506001600160801b0381168114620005a457600080fd5b8091505092959891949750929550565b600181811c90821680620005c957607f821691505b602082108103620005ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000640576000816000526020600020601f850160051c810160208610156200061b5750805b601f850160051c820191505b818110156200063c5782815560010162000627565b5050505b505050565b81516001600160401b038111156200066157620006616200041d565b6200067981620006728454620005b4565b84620005f0565b602080601f831160018114620006b15760008415620006985750858301515b600019600386901b1c1916600185901b1785556200063c565b600085815260208120601f198616915b82811015620006e257888601518255948401946001909101908401620006c1565b5085821015620007015787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200073357634e487b7160e01b600052601160045260246000fd5b92915050565b615c4980620007496000396000f3fe6080604052600436106103f95760003560e01c80638462151c11610213578063ac9650d811610123578063cb2ef6f7116100ab578063d637ed591161007a578063d637ed5914610c64578063dbe55e5614610c94578063e715032214610cb4578063e8a3d48514610cd4578063e985e9c514610ce957600080fd5b8063cb2ef6f714610be8578063ce80564214610c04578063d37c353b14610c24578063d547741f14610c4457600080fd5b8063b88d4fde116100f2578063b88d4fde14610b46578063c23dc68f14610b66578063c68907de14610b93578063c87b56dd14610ba8578063ca15c87314610bc857600080fd5b8063ac9650d814610aac578063acd083f814610a77578063ad1eefc514610ad9578063b24f2d3914610b1b57600080fd5b806399a2557a116101a6578063a05112fc11610175578063a05112fc14610a22578063a217fddf14610a42578063a22cb46514610a57578063a2309ff814610a77578063a32fa5b314610a8c57600080fd5b806399a2557a146109ac5780639bcf7a15146109cc5780639ed3edf0146109ec5780639fc4d68f14610a0257600080fd5b80639010d07c116101e25780639010d07c1461093757806391d1485414610957578063938e3d7b1461097757806395d89b411461099757600080fd5b80638462151c146108c457806384bb1e42146108f157806385d79102146109045780638da5cb5b1461091957600080fd5b80633b1475a71161030e578063600dd5ea116102a15780636f8934f4116102705780636f8934f41461080757806370a082311461083457806374bc7db714610854578063754a81d914610874578063830405321461089457600080fd5b8063600dd5ea146107925780636352211e146107b257806363b45e2d146107d25780636f4f2837146107e757600080fd5b8063430c2081116102dd578063430c2081146106e3578063492e224b146107035780634cc157df146107235780635bbb21771461076557600080fd5b80633b1475a71461066e5780633f3e4c111461068357806342842e0e146106a357806342966c68146106c357600080fd5b806318160ddd11610391578063248a9ca311610360578063248a9ca3146105ac5780632a55205a146105d95780632ab4d052146106185780632f2ff15d1461062e57806336568abe1461064e57600080fd5b806318160ddd1461052957806323a2902b1461054c57806323b872dd1461056c5780632419f51b1461058c57600080fd5b8063081812fc116103cd578063081812fc146104a9578063095ea7b3146104c9578063096a8ab7146104e957806313af40351461050957600080fd5b806275a317146103fe57806301ffc9a71461042057806306fdde0314610455578063079fe40e14610477575b600080fd5b34801561040a57600080fd5b5061041e610419366004614a33565b610d32565b005b34801561042c57600080fd5b5061044061043b366004614a98565b610db6565b60405190151581526020015b60405180910390f35b34801561046157600080fd5b5061046a610e23565b60405161044c9190614b05565b34801561048357600080fd5b506010546001600160a01b03165b6040516001600160a01b03909116815260200161044c565b3480156104b557600080fd5b506104916104c4366004614b18565b610eb5565b3480156104d557600080fd5b5061041e6104e4366004614b31565b610ef9565b3480156104f557600080fd5b5061041e610504366004614b18565b610f7f565b34801561051557600080fd5b5061041e610524366004614b5d565b610ff3565b34801561053557600080fd5b50600154600054035b60405190815260200161044c565b34801561055857600080fd5b50610440610567366004614b8c565b611023565b34801561057857600080fd5b5061041e610587366004614c09565b6113eb565b34801561059857600080fd5b5061053e6105a7366004614b18565b6113f6565b3480156105b857600080fd5b5061053e6105c7366004614b18565b60009081526016602052604090205490565b3480156105e557600080fd5b506105f96105f4366004614c4a565b611464565b604080516001600160a01b03909316835260208301919091520161044c565b34801561062457600080fd5b5061053e601e5481565b34801561063a57600080fd5b5061041e610649366004614c6c565b6114a1565b34801561065a57600080fd5b5061041e610669366004614c6c565b611537565b34801561067a57600080fd5b5060115461053e565b34801561068f57600080fd5b5061041e61069e366004614b18565b611599565b3480156106af57600080fd5b5061041e6106be366004614c09565b6115e2565b3480156106cf57600080fd5b5061041e6106de366004614b18565b6115fd565b3480156106ef57600080fd5b506104406106fe366004614b31565b611608565b34801561070f57600080fd5b5061044061071e366004614b18565b611687565b34801561072f57600080fd5b5061074361073e366004614b18565b6116ad565b604080516001600160a01b03909316835261ffff90911660208301520161044c565b34801561077157600080fd5b50610785610780366004614c9c565b611718565b60405161044c9190614d41565b34801561079e57600080fd5b5061041e6107ad366004614b31565b6117de565b3480156107be57600080fd5b506104916107cd366004614b18565b61180c565b3480156107de57600080fd5b50600c5461053e565b3480156107f357600080fd5b5061041e610802366004614b5d565b61181e565b34801561081357600080fd5b50610827610822366004614b18565b61184b565b60405161044c9190614dab565b34801561084057600080fd5b5061053e61084f366004614b5d565b6119a8565b34801561086057600080fd5b5061041e61086f366004614e71565b6119f6565b34801561088057600080fd5b5061041e61088f366004614ec7565b611d19565b3480156108a057600080fd5b506104406108af366004614b18565b600e6020526000908152604090205460ff1681565b3480156108d057600080fd5b506108e46108df366004614b5d565b611d8d565b60405161044c9190614f46565b61041e6108ff366004614f7e565b611ed2565b34801561091057600080fd5b5060135461053e565b34801561092557600080fd5b506009546001600160a01b0316610491565b34801561094357600080fd5b50610491610952366004614c4a565b611fbe565b34801561096357600080fd5b50610440610972366004614c6c565b6120ac565b34801561098357600080fd5b5061041e61099236600461500b565b6120d7565b3480156109a357600080fd5b5061046a612104565b3480156109b857600080fd5b506108e46109c736600461503f565b612113565b3480156109d857600080fd5b5061041e6109e7366004615074565b6122c6565b3480156109f857600080fd5b5061053e60135481565b348015610a0e57600080fd5b5061046a610a1d3660046150dc565b6122f5565b348015610a2e57600080fd5b5061046a610a3d366004614b18565b612475565b348015610a4e57600080fd5b5061053e600081565b348015610a6357600080fd5b5061041e610a72366004615127565b61250f565b348015610a8357600080fd5b5060005461053e565b348015610a9857600080fd5b50610440610aa7366004614c6c565b6125a4565b348015610ab857600080fd5b50610acc610ac7366004615155565b6125fa565b60405161044c9190615196565b348015610ae557600080fd5b5061053e610af4366004614c6c565b6000918252601b602090815260408084206001600160a01b03909316845291905290205490565b348015610b2757600080fd5b50600a546001600160a01b03811690600160a01b900461ffff16610743565b348015610b5257600080fd5b5061041e610b613660046151fa565b612756565b348015610b7257600080fd5b50610b86610b81366004614b18565b61279a565b60405161044c9190615259565b348015610b9f57600080fd5b5061053e612848565b348015610bb457600080fd5b5061046a610bc3366004614b18565b6128eb565b348015610bd457600080fd5b5061053e610be3366004614b18565b61295a565b348015610bf457600080fd5b506545524337323160d01b61053e565b348015610c1057600080fd5b5061046a610c1f3660046150dc565b6129e0565b348015610c3057600080fd5b5061053e610c3f36600461528e565b612a6d565b348015610c5057600080fd5b5061041e610c5f366004614c6c565b612b05565b348015610c7057600080fd5b50601854601954610c7f919082565b6040805192835260208301919091520161044c565b348015610ca057600080fd5b50601254610491906001600160a01b031681565b348015610cc057600080fd5b5061046a610ccf366004615307565b612b1e565b348015610ce057600080fd5b5061046a612b93565b348015610cf557600080fd5b50610440610d04366004615362565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b610d3a612ba0565b610d855760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b60448201526064015b60405180910390fd5b610d97610d9160115490565b82612bcd565b610db282600160405180602001604052806000815250612c3f565b5050565b60006301ffc9a760e01b6001600160e01b031983161480610de757506380ac58cd60e01b6001600160e01b03198316145b80610e025750635b5e139f60e01b6001600160e01b03198316145b80610e1d57506001600160e01b0319821663152a902d60e11b145b92915050565b606060028054610e3290615390565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5e90615390565b8015610eab5780601f10610e8057610100808354040283529160200191610eab565b820191906000526020600020905b815481529060010190602001808311610e8e57829003601f168201915b5050505050905090565b6000610ec082612de2565b610edd576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b6000610f048261180c565b9050806001600160a01b0316836001600160a01b031603610f385760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b03821614610f6f57610f528133610d04565b610f6f576040516367d9dca160e11b815260040160405180910390fd5b610f7a838383612e0d565b505050565b6012546001600160a01b03163314610faa5760405163231a964b60e11b815260040160405180910390fd5b601354811115610fcd5760405163a223083f60e01b815260040160405180910390fd5b60008111610fee5760405163b4b79d4f60e01b815260040160405180910390fd5b601355565b610ffb612e69565b6110175760405162461bcd60e51b8152600401610d7c906153c4565b61102081612e7a565b50565b6000868152601a60209081526040808320815161010081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015460a083015260068101546001600160a01b031660c08301526007810180548493929160e08401916110a290615390565b80601f01602080910402602001604051908101604052809291908181526020018280546110ce90615390565b801561111b5780601f106110f05761010080835404028352916020019161111b565b820191906000526020600020905b8154815290600101906020018083116110fe57829003601f168201915b50505091909252505050606081015160a082015160c08301516080840151939450919290919015611200576111fc61115387806153ec565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250505060808088015191508d9060208b01359060408c0135906111a8908d0160608e01614b5d565b6040516bffffffffffffffffffffffff19606095861b811660208301526034820194909452605481019290925290921b16607482015260880160405160208183030381529060405280519060200120612ecc565b5094505b8415611287578560200135600003611218578261121e565b85602001355b92506000198660400135036112335781611239565b85604001355b915060001986604001351415801561126a5750600061125e6080880160608901614b5d565b6001600160a01b031614155b6112745780611284565b6112846080870160608801614b5d565b90505b60008b8152601b602090815260408083206001600160a01b03808f168552925290912054908981169083161415806112bf5750828814155b156112ff5760405162461bcd60e51b815260206004820152601060248201526f2150726963654f7243757272656e637960801b6044820152606401610d7c565b891580611314575083611312828c61544b565b115b1561134a5760405162461bcd60e51b8152600401610d7c906020808252600490820152632151747960e01b604082015260600190565b84602001518a866040015161135f919061544b565b111561139a5760405162461bcd60e51b815260206004820152600a602482015269214d6178537570706c7960b01b6044820152606401610d7c565b84514210156113dc5760405162461bcd60e51b815260206004820152600e60248201526d18d85b9d0818db185a5b481e595d60921b6044820152606401610d7c565b50505050509695505050505050565b610f7a838383612f90565b6000611401600c5490565b821061143f5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610d7c565b600c82815481106114525761145261545e565b90600052602060002001549050919050565b600080600080611473866116ad565b90945084925061ffff16905061271061148c8287615474565b61149691906154a1565b925050509250929050565b6000828152601660205260409020546114ba903361316c565b60008281526015602090815260408083206001600160a01b038516845290915290205460ff161561152d5760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c79206772616e7420746f206e6f6e20686f6c646572730000006044820152606401610d7c565b610db282826131ec565b336001600160a01b0382161461158f5760405162461bcd60e51b815260206004820152601a60248201527f43616e206f6e6c792072656e6f756e636520666f722073656c660000000000006044820152606401610d7c565b610db28282613200565b60006115a5813361316c565b601e8290556040518281527ff2672935fc79f5237559e2e2999dbe743bf65430894ac2b37666890e7c69e1af906020015b60405180910390a15050565b610f7a83838360405180602001604052806000815250612756565b611020816001613257565b6000806116148361180c565b9050806001600160a01b0316846001600160a01b0316148061165b57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b8061167f5750836001600160a01b031661167484610eb5565b6001600160a01b0316145b949350505050565b600081815260146020526040812080548291906116a390615390565b9050119050919050565b6000818152600b60209081526040808320815180830190925280546001600160a01b0316808352600190910154928201929092528291156116f4578051602082015161170e565b600a546001600160a01b03811690600160a01b900461ffff165b9250925050915091565b80516060906000816001600160401b0381111561173757611737614970565b60405190808252806020026020018201604052801561178257816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816117555790505b50905060005b8281146117d6576117b18582815181106117a4576117a461545e565b602002602001015161279a565b8282815181106117c3576117c361545e565b6020908102919091010152600101611788565b509392505050565b6117e6612e69565b6118025760405162461bcd60e51b8152600401610d7c906153c4565b610db2828261340a565b6000611817826134b0565b5192915050565b611826612e69565b6118425760405162461bcd60e51b8152600401610d7c906153c4565b611020816135ca565b61189f60405180610100016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b03168152602001606081525090565b6000828152601a6020908152604091829020825161010081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a082015260068201546001600160a01b031660c082015260078201805491929160e08401919061191f90615390565b80601f016020809104026020016040519081016040528092919081815260200182805461194b90615390565b80156119985780601f1061196d57610100808354040283529160200191611998565b820191906000526020600020905b81548152906001019060200180831161197b57829003601f168201915b5050505050815250509050919050565b60006001600160a01b0382166119d1576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b03166000908152600560205260409020546001600160401b031690565b6119fe612e69565b611a1a5760405162461bcd60e51b8152600401610d7c906153c4565b601854601954818315611a3457611a31828461544b565b90505b601985905560188190556000805b86811015611bdc57801580611a7a5750878782818110611a6457611a6461545e565b9050602002810190611a7691906154b5565b3582105b611aab5760405162461bcd60e51b815260206004820152600260248201526114d560f21b6044820152606401610d7c565b6000601a81611aba848761544b565b8152602001908152602001600020600201549050888883818110611ae057611ae061545e565b9050602002810190611af291906154b5565b60200135811115611b3a5760405162461bcd60e51b81526020600482015260126024820152711b585e081cdd5c1c1b1e4818db185a5b595960721b6044820152606401610d7c565b888883818110611b4c57611b4c61545e565b9050602002810190611b5e91906154b5565b601a6000611b6c858861544b565b81526020019081526020016000208181611b869190615622565b50819050601a6000611b98858861544b565b8152602081019190915260400160002060020155888883818110611bbe57611bbe61545e565b9050602002810190611bd091906154b5565b35925050600101611a42565b508415611c5157835b82811015611c4b576000818152601a6020526040812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611c41600783018261490d565b5050600101611be5565b50611cd5565b85831115611cd557855b83811015611cd357601a6000611c71838661544b565b81526020810191909152604001600090812081815560018101829055600281018290556003810182905560048101829055600581018290556006810180546001600160a01b031916905590611cc9600783018261490d565b5050600101611c5b565b505b7fbf4016fceeaaa4ac5cf4be865b559ff85825ab4ca7aa7b661d16e2f544c03098878787604051611d089392919061570e565b60405180910390a150505050505050565b611d21612ba0565b611d675760405162461bcd60e51b81526020600482015260176024820152762737ba1030baba3437b934bd32b2103a379036b4b73a1760491b6044820152606401610d7c565b611d7a611d7360115490565b848461365e565b5050611d87848483612c3f565b50505050565b60606000806000611d9d856119a8565b90506000816001600160401b03811115611db957611db9614970565b604051908082528060200260200182016040528015611de2578160200160208202803683370190505b509050611e08604080516060810182526000808252602082018190529181019190915290565b60005b838614611ec657600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff1615159181018290529250611ebe5781516001600160a01b031615611e7f57815194505b876001600160a01b0316856001600160a01b031603611ebe5780838780600101985081518110611eb157611eb161545e565b6020026020010181815250505b600101611e0b565b50909695505050505050565b611ee08686868686866136c2565b6000611eea612848565b9050611efa813388888888611023565b506000818152601a602052604081206002018054889290611f1c90849061544b565b90915550506000818152601b6020908152604080832033845290915281208054889290611f4a90849061544b565b90915550611f5d9050600087878761377d565b6000611f69888861385b565b60408051828152602081018a90529192506001600160a01b038a1691339185917ffa76a4010d9533e3e964f2930a65fb6042a12fa6ff5b08281837a10b0be7321e910160405180910390a45050505050505050565b60008281526017602052604081205481805b828110156120a35760008681526017602090815260408083208484526001019091529020546001600160a01b03161561204c5784820361203a5760008681526017602090815260408083209383526001909301905220546001600160a01b03169250610e1d915050565b61204560018361544b565b9150612091565b6120578660006120ac565b801561207e5750600086815260176020908152604080832083805260020190915290205481145b156120915761208e60018361544b565b91505b61209c60018261544b565b9050611fd0565b50505092915050565b60009182526015602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6120df612e69565b6120fb5760405162461bcd60e51b8152600401610d7c906153c4565b61102081613868565b606060038054610e3290615390565b606081831061213557604051631960ccad60e11b815260040160405180910390fd5b6000805480841115612145578093505b6000612150876119a8565b90508486101561216f5785850381811015612169578091505b50612173565b5060005b6000816001600160401b0381111561218d5761218d614970565b6040519080825280602002602001820160405280156121b6578160200160208202803683370190505b509050816000036121cc5793506122bf92505050565b60006121d78861279a565b9050600081604001516121e8575080515b885b8881141580156121fa5750848714155b156122b357600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16151591810182905293506122ab5782516001600160a01b03161561226c57825191505b8a6001600160a01b0316826001600160a01b0316036122ab578084888060010199508151811061229e5761229e61545e565b6020026020010181815250505b6001016121ea565b50505092835250909150505b9392505050565b6122ce612e69565b6122ea5760405162461bcd60e51b8152600401610d7c906153c4565b610f7a838383613938565b60008381526014602052604081208054606092919061231390615390565b80601f016020809104026020016040519081016040528092919081815260200182805461233f90615390565b801561238c5780601f106123615761010080835404028352916020019161238c565b820191906000526020600020905b81548152906001019060200180831161236f57829003601f168201915b5050505050905080516000036123d85760405162461bcd60e51b8152602060048201526011602482015270139bdd1a1a5b99c81d1bc81c995d99585b607a1b6044820152606401610d7c565b600080828060200190518101906123ef91906157f6565b915091506123fe828787612b1e565b935080848787466040516020016124189493929190615876565b604051602081830303815290604052805190602001201461246b5760405162461bcd60e51b815260206004820152600d60248201526c496e636f7272656374206b657960981b6044820152606401610d7c565b5050509392505050565b6014602052600090815260409020805461248e90615390565b80601f01602080910402602001604051908101604052809291908181526020018280546124ba90615390565b80156125075780601f106124dc57610100808354040283529160200191612507565b820191906000526020600020905b8154815290600101906020018083116124ea57829003601f168201915b505050505081565b336001600160a01b038316036125385760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600082815260156020908152604080832083805290915281205460ff166125f1575060008281526015602090815260408083206001600160a01b038516845290915290205460ff16610e1d565b50600192915050565b6060816001600160401b0381111561261457612614614970565b60405190808252806020026020018201604052801561264757816020015b60608152602001906001900390816126325790505b509050336000805b848110156120a35781156126ce576126ac308787848181106126735761267361545e565b905060200281019061268591906154d5565b866040516020016126989392919061589f565b604051602081830303815290604052613a01565b8482815181106126be576126be61545e565b602002602001018190525061274e565b612730308787848181106126e4576126e461545e565b90506020028101906126f691906154d5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613a0192505050565b8482815181106127425761274261545e565b60200260200101819052505b60010161264f565b612761848484612f90565b6001600160a01b0383163b15611d875761277d84848484613a26565b611d87576040516368d2bf6b60e11b815260040160405180910390fd5b60408051606080820183526000808352602080840182905283850182905284519283018552818352820181905292810183905290915060005483106127df5792915050565b50600082815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff16158015928201929092529061283f5792915050565b6122bf836134b0565b601954601854600091829161285d919061544b565b90505b6018548111156128b457601a60006128796001846158c5565b81526020019081526020016000206000015442106128a25761289c6001826158c5565b91505090565b806128ac816158d8565b915050612860565b5060405162461bcd60e51b815260206004820152600b60248201526a10a1a7a72224aa24a7a71760a91b6044820152606401610d7c565b606060006128f883613b11565b509050600061290684613c16565b905061291182611687565b1561293f578060405160200161292791906158ef565b60405160208183030381529060405292505050919050565b8061294985613d77565b604051602001612927929190615914565b600081815260176020526040812054815b818110156129be5760008481526017602090815260408083208484526001019091529020546001600160a01b0316156129ac576129a960018461544b565b92505b6129b760018261544b565b905061296b565b506129ca8360006120ac565b156129da576122bf60018361544b565b50919050565b6060601d546129ef813361316c565b60006129fa866113f6565b9050612a078186866122f5565b9250612a228160405180602001604052806000815250613e77565b612a2c8184613e8f565b857f6df1d8db2a036436ffe0b2d1833f2c5f1e624818dfce2578c0faa4b83ef9998d84604051612a5c9190614b05565b60405180910390a250509392505050565b60008115612aee57600080612a8484860186615943565b915091508151600014158015612a9957508015155b15612aeb57612aeb88601154612aaf919061544b565b86868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613e7792505050565b50505b612afb8686868686613f34565b9695505050505050565b60008281526016602052604090205461158f903361316c565b8251604080518083016020019091528181529060005b81811015612b8a576000858583604051602001612b5393929190615987565b60408051601f19818403018152919052805160209182012088840182015118858401820152612b8391508261544b565b9050612b34565b50509392505050565b6008805461248e90615390565b6000612bb46009546001600160a01b031690565b6001600160a01b0316336001600160a01b031614905090565b6000828152600f602052604090208054612be690615390565b159050612c275760405162461bcd60e51b815260206004820152600f60248201526e15549248185b1c9958591e481cd95d608a1b6044820152606401610d7c565b6000828152600f60205260409020610f7a8282615999565b6000546001600160a01b038416612c6857604051622e076360e81b815260040160405180910390fd5b82600003612c895760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff1981166001600160401b038083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b15612d9f575b60405182906001600160a01b03881690600090600080516020615bf4833981519152908290a4612d686000878480600101955087613a26565b612d85576040516368d2bf6b60e11b815260040160405180910390fd5b808210612d2f578260005414612d9a57600080fd5b612dd2565b5b6040516001830192906001600160a01b03881690600090600080516020615bf4833981519152908290a4808210612da0575b506000908155611d879085838684565b6000805482108015610e1d575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000612e7581336120ac565b905090565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7690600090a35050565b6000808281805b8751811015612f8457612ee7600283615474565b91506000888281518110612efd57612efd61545e565b60200260200101519050808411612f3f576040805160208101869052908101829052606001604051602081830303815290604052805190602001209350612f7b565b6040805160208101839052908101859052606001604051602081830303815290604052805190602001209350600183612f78919061544b565b92505b50600101612ed3565b50941495939450505050565b6000612f9b826134b0565b9050836001600160a01b031681600001516001600160a01b031614612fd25760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b0386161480612ff05750612ff08533610d04565b8061300b57503361300084610eb5565b6001600160a01b0316145b90508061302b57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03841661305257604051633a954ecd60e21b815260040160405180910390fd5b61305e60008487612e0d565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff198082166001600160401b0392831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b4290921691909102178355870180845292208054919390911661313257600054821461313257805460208601516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b0316600080516020615bf483398151915260405160405180910390a45b5050505050565b60008281526015602090815260408083206001600160a01b038516845290915290205460ff16610db2576131aa816001600160a01b03166014614041565b6131b5836020614041565b6040516020016131c6929190615a58565b60408051601f198184030181529082905262461bcd60e51b8252610d7c91600401614b05565b6131f682826141dc565b610db28282614237565b61320a82826142a4565b60008281526017602090815260408083206001600160a01b03851680855260028201808552838620805487526001909301855292852080546001600160a01b031916905584529152555050565b6000613262836134b0565b805190915082156132c8576000336001600160a01b038316148061328b575061328b8233610d04565b806132a657503361329b86610eb5565b6001600160a01b0316145b9050806132c657604051632ce44b5f60e11b815260040160405180910390fd5b505b6132d460008583612e0d565b6001600160a01b0380821660008181526005602090815260408083208054600160801b6000196001600160401b0380841691909101811667ffffffffffffffff198416811783900482166001908101831690930277ffffffffffffffff0000000000000000ffffffffffffffff19909416179290921783558b86526004909452828520805460ff60e01b1942909316600160a01b026001600160e01b03199091169097179690961716600160e01b1785559189018084529220805491949091166133d25760005482146133d257805460208701516001600160401b0316600160a01b026001600160e01b03199091166001600160a01b038716171781555b5050604051869250600091506001600160a01b03841690600080516020615bf4833981519152908390a4505060018054810190555050565b61271081111561344e5760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b6044820152606401610d7c565b600a80546001600160a01b0384166001600160b01b03199091168117600160a01b61ffff851602179091556040518281527f90d7ec04bcb8978719414f82e52e4cb651db41d0e6f8cea6118c2191e6183adb9060200160405180910390a25050565b6040805160608101825260008082526020820181905291810191909152816000548110156135b157600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b81046001600160401b031692820192909252600160e01b90910460ff161515918101829052906135af5780516001600160a01b031615613546579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b82046001600160401b031693830193909352600160e01b900460ff16151592810192909252156135aa579392505050565b613546565b505b604051636f96cda160e11b815260040160405180910390fd5b6001600160a01b0381166136145760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606401610d7c565b601080546001600160a01b0319166001600160a01b0383169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a250565b60008061366b848661544b565b600c8054600181019091557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7018190556000818152600d602052604090209092508291506136b98482615999565b50935093915050565b601154856000546136d3919061544b565b111561370b5760405162461bcd60e51b815260206004820152600760248201526621546f6b656e7360c81b6044820152606401610d7c565b601e5415806137295750601e5485600054613726919061544b565b11155b6137755760405162461bcd60e51b815260206004820152601860248201527f657863656564206d617820746f74616c20737570706c792e00000000000000006044820152606401610d7c565b505050505050565b60006001600160a01b0385161561379457846137a1565b6010546001600160a01b03165b905060008083116137b35760006137bd565b6137bd8386615474565b905073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b0385160161382d576013546137f1908261544b565b341461382d5760405162461bcd60e51b815260206004820152600b60248201526a21436c61696d507269636560a81b6044820152606401610d7c565b821561383f5761383f84338484614306565b61377584336012546013546001600160a01b0390911690614306565b600054610e1d838361434c565b60006008805461387790615390565b80601f01602080910402602001604051908101604052809291908181526020018280546138a390615390565b80156138f05780601f106138c5576101008083540402835291602001916138f0565b820191906000526020600020905b8154815290600101906020018083116138d357829003601f168201915b5050505050905081600890816139069190615999565b507fc9c7c3fe08b88b4df9d4d47ef47d2c43d55c025a0ba88ca442580ed9e7348a1681836040516115d6929190615ac5565b61271081111561397c5760405162461bcd60e51b815260206004820152600f60248201526e45786365656473206d61782062707360881b6044820152606401610d7c565b6040805180820182526001600160a01b0384811680835260208084018681526000898152600b8352869020945185546001600160a01b031916941693909317845591516001909301929092559151838152909185917f7365cf4122f072a3365c20d54eff9b38d73c096c28e1892ec8f5b0e403a0f12d910160405180910390a3505050565b60606122bf8383604051806060016040528060278152602001615bcd60279139614366565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290613a5b903390899088908890600401615af3565b6020604051808303816000875af1925050508015613a96575060408051601f3d908101601f19168201909252613a9391810190615b26565b60015b613af4573d808015613ac4576040519150601f19603f3d011682016040523d82523d6000602084013e613ac9565b606091505b508051600003613aec576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b6000806000613b1f600c5490565b90506000600c805480602002602001604051908101604052809291908181526020018280548015613b6f57602002820191906000526020600020905b815481526020019060010190808311613b5b575b5050505050905060005b82811015613bdb57818181518110613b9357613b9361545e565b6020026020010151861015613bc957809350818181518110613bb757613bb761545e565b60200260200101519450505050915091565b613bd460018261544b565b9050613b79565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a59081d1bdad95b9259608a1b6044820152606401610d7c565b60606000613c23600c5490565b90506000600c805480602002602001604051908101604052809291908181526020018280548015613c7357602002820191906000526020600020905b815481526020019060010190808311613c5f575b5050505050905060005b82811015613bdb57818181518110613c9757613c9761545e565b6020026020010151851015613d6557600d6000838381518110613cbc57613cbc61545e565b602002602001015181526020019081526020016000208054613cdd90615390565b80601f0160208091040260200160405190810160405280929190818152602001828054613d0990615390565b8015613d565780601f10613d2b57610100808354040283529160200191613d56565b820191906000526020600020905b815481529060010190602001808311613d3957829003601f168201915b50505050509350505050919050565b613d7060018261544b565b9050613c7d565b606081600003613d9e5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115613dc85780613db281615b43565b9150613dc19050600a836154a1565b9150613da2565b6000816001600160401b03811115613de257613de2614970565b6040519080825280601f01601f191660200182016040528015613e0c576020820181803683370190505b5090505b841561167f57613e216001836158c5565b9150613e2e600a86615b5c565b613e3990603061544b565b60f81b818381518110613e4e57613e4e61545e565b60200101906001600160f81b031916908160001a905350613e70600a866154a1565b9450613e10565b6000828152601460205260409020610f7a8282615999565b6000828152600e602052604090205460ff1615613edd5760405162461bcd60e51b815260206004820152600c60248201526b2130ba31b410333937bd32b760a11b6044820152606401610d7c565b6000828152600d60205260409020613ef58282615999565b507f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c613f20836143d4565b6040805191825260208201859052016115d6565b6000613f3e6144e4565b613f5a5760405162461bcd60e51b8152600401610d7c906153c4565b85600003613f925760405162461bcd60e51b81526020600482015260056024820152640c08185b5d60da1b6044820152606401610d7c565b60006011549050613fda818888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061365e92505050565b6011919091559150807f2a0365091ef1a40953c670dce28177e37520648a6fdc91506bffac0ab045570d60016140108a8461544b565b61401a91906158c5565b8888888860405161402f959493929190615b70565b60405180910390a25095945050505050565b60606000614050836002615474565b61405b90600261544b565b6001600160401b0381111561407257614072614970565b6040519080825280601f01601f19166020018201604052801561409c576020820181803683370190505b509050600360fc1b816000815181106140b7576140b761545e565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106140e6576140e661545e565b60200101906001600160f81b031916908160001a905350600061410a846002615474565b61411590600161544b565b90505b600181111561418d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106141495761414961545e565b1a60f81b82828151811061415f5761415f61545e565b60200101906001600160f81b031916908160001a90535060049490941c93614186816158d8565b9050614118565b5083156122bf5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610d7c565b60008281526015602090815260408083206001600160a01b0385168085529252808320805460ff1916600117905551339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600082815260176020526040812080549160019190614256838561544b565b9091555050600092835260176020908152604080852083865260018101835281862080546001600160a01b039096166001600160a01b03199096168617905593855260029093019052912055565b6142ae828261316c565b60008281526015602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b8015611d875773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038516016143405761433b82826144f3565b611d87565b611d8784848484614596565b610db2828260405180602001604052806000815250612c3f565b6060600080856001600160a01b0316856040516143839190615b9d565b600060405180830381855af49150503d80600081146143be576040519150601f19603f3d011682016040523d82523d6000602084013e6143c3565b606091505b5091509150612afb868383876145e9565b6000806143e0600c5490565b90506000600c80548060200260200160405190810160405280929190818152602001828054801561443057602002820191906000526020600020905b81548152602001906001019080831161441c575b5050505050905060005b828110156144a9578181815181106144545761445461545e565b602002602001015185036144a157801561449657816144746001836158c5565b815181106144845761448461545e565b60200260200101519350505050919050565b506000949350505050565b60010161443a565b5060405162461bcd60e51b815260206004820152600f60248201526e125b9d985b1a590818985d18da1259608a1b6044820152606401610d7c565b6000612e75601d546109723390565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614540576040519150601f19603f3d011682016040523d82523d6000602084013e614545565b606091505b5050905080610f7a5760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610d7c565b816001600160a01b0316836001600160a01b03160315611d8757306001600160a01b038416036145d45761433b6001600160a01b0385168383614662565b611d876001600160a01b0385168484846146c5565b60608315614658578251600003614651576001600160a01b0385163b6146515760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d7c565b508161167f565b61167f83836146fd565b6040516001600160a01b038316602482015260448101829052610f7a90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614727565b6040516001600160a01b0380851660248301528316604482015260648101829052611d879085906323b872dd60e01b9060840161468e565b81511561470d5781518083602001fd5b8060405162461bcd60e51b8152600401610d7c9190614b05565b600061477c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166147f99092919063ffffffff16565b805190915015610f7a578080602001905181019061479a9190615baf565b610f7a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610d7c565b606061167f8484600085856001600160a01b0385163b61485b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610d7c565b600080866001600160a01b031685876040516148779190615b9d565b60006040518083038185875af1925050503d80600081146148b4576040519150601f19603f3d011682016040523d82523d6000602084013e6148b9565b606091505b50915091506148c98282866148d4565b979650505050505050565b606083156148e35750816122bf565b8251156148f35782518084602001fd5b8160405162461bcd60e51b8152600401610d7c9190614b05565b50805461491990615390565b6000825580601f10614929575050565b601f01602090049060005260206000209081019061102091905b808211156149575760008155600101614943565b5090565b6001600160a01b038116811461102057600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156149ae576149ae614970565b604052919050565b60006001600160401b038211156149cf576149cf614970565b50601f01601f191660200190565b600082601f8301126149ee57600080fd5b8135614a016149fc826149b6565b614986565b818152846020838601011115614a1657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614a4657600080fd5b8235614a518161495b565b915060208301356001600160401b03811115614a6c57600080fd5b614a78858286016149dd565b9150509250929050565b6001600160e01b03198116811461102057600080fd5b600060208284031215614aaa57600080fd5b81356122bf81614a82565b60005b83811015614ad0578181015183820152602001614ab8565b50506000910152565b60008151808452614af1816020860160208601614ab5565b601f01601f19169290920160200192915050565b6020815260006122bf6020830184614ad9565b600060208284031215614b2a57600080fd5b5035919050565b60008060408385031215614b4457600080fd5b8235614b4f8161495b565b946020939093013593505050565b600060208284031215614b6f57600080fd5b81356122bf8161495b565b6000608082840312156129da57600080fd5b60008060008060008060c08789031215614ba557600080fd5b863595506020870135614bb78161495b565b9450604087013593506060870135614bce8161495b565b92506080870135915060a08701356001600160401b03811115614bf057600080fd5b614bfc89828a01614b7a565b9150509295509295509295565b600080600060608486031215614c1e57600080fd5b8335614c298161495b565b92506020840135614c398161495b565b929592945050506040919091013590565b60008060408385031215614c5d57600080fd5b50508035926020909101359150565b60008060408385031215614c7f57600080fd5b823591506020830135614c918161495b565b809150509250929050565b60006020808385031215614caf57600080fd5b82356001600160401b0380821115614cc657600080fd5b818501915085601f830112614cda57600080fd5b813581811115614cec57614cec614970565b8060051b9150614cfd848301614986565b8181529183018401918481019088841115614d1757600080fd5b938501935b83851015614d3557843582529385019390850190614d1c565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611ec657614d9883855180516001600160a01b031682526020808201516001600160401b0316908301526040908101511515910152565b9284019260609290920191600101614d5d565b6020815281516020820152602082015160408201526040820151606082015260608201516080820152608082015160a082015260a082015160c082015260018060a01b0360c08301511660e0820152600060e083015161010080818501525061167f610120840182614ad9565b60008083601f840112614e2a57600080fd5b5081356001600160401b03811115614e4157600080fd5b6020830191508360208260051b8501011115614e5c57600080fd5b9250929050565b801515811461102057600080fd5b600080600060408486031215614e8657600080fd5b83356001600160401b03811115614e9c57600080fd5b614ea886828701614e18565b9094509250506020840135614ebc81614e63565b809150509250925092565b60008060008060808587031215614edd57600080fd5b8435614ee88161495b565b93506020850135925060408501356001600160401b0380821115614f0b57600080fd5b614f17888389016149dd565b93506060870135915080821115614f2d57600080fd5b50614f3a878288016149dd565b91505092959194509250565b6020808252825182820181905260009190848201906040850190845b81811015611ec657835183529284019291840191600101614f62565b60008060008060008060c08789031215614f9757600080fd5b8635614fa28161495b565b9550602087013594506040870135614fb98161495b565b93506060870135925060808701356001600160401b0380821115614fdc57600080fd5b614fe88a838b01614b7a565b935060a0890135915080821115614ffe57600080fd5b50614bfc89828a016149dd565b60006020828403121561501d57600080fd5b81356001600160401b0381111561503357600080fd5b61167f848285016149dd565b60008060006060848603121561505457600080fd5b833561505f8161495b565b95602085013595506040909401359392505050565b60008060006060848603121561508957600080fd5b833592506020840135614c398161495b565b60008083601f8401126150ad57600080fd5b5081356001600160401b038111156150c457600080fd5b602083019150836020828501011115614e5c57600080fd5b6000806000604084860312156150f157600080fd5b8335925060208401356001600160401b0381111561510e57600080fd5b61511a8682870161509b565b9497909650939450505050565b6000806040838503121561513a57600080fd5b82356151458161495b565b91506020830135614c9181614e63565b6000806020838503121561516857600080fd5b82356001600160401b0381111561517e57600080fd5b61518a85828601614e18565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156151ed57603f198886030184526151db858351614ad9565b945092850192908501906001016151bf565b5092979650505050505050565b6000806000806080858703121561521057600080fd5b843561521b8161495b565b9350602085013561522b8161495b565b92506040850135915060608501356001600160401b0381111561524d57600080fd5b614f3a878288016149dd565b81516001600160a01b031681526020808301516001600160401b03169082015260408083015115159082015260608101610e1d565b6000806000806000606086880312156152a657600080fd5b8535945060208601356001600160401b03808211156152c457600080fd5b6152d089838a0161509b565b909650945060408801359150808211156152e957600080fd5b506152f68882890161509b565b969995985093965092949392505050565b60008060006040848603121561531c57600080fd5b83356001600160401b038082111561533357600080fd5b61533f878388016149dd565b9450602086013591508082111561535557600080fd5b5061511a8682870161509b565b6000806040838503121561537557600080fd5b82356153808161495b565b91506020830135614c918161495b565b600181811c908216806153a457607f821691505b6020821081036129da57634e487b7160e01b600052602260045260246000fd5b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b6000808335601e1984360301811261540357600080fd5b8301803591506001600160401b0382111561541d57600080fd5b6020019150600581901b3603821315614e5c57600080fd5b634e487b7160e01b600052601160045260246000fd5b80820180821115610e1d57610e1d615435565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610e1d57610e1d615435565b634e487b7160e01b600052601260045260246000fd5b6000826154b0576154b061548b565b500490565b6000823560fe198336030181126154cb57600080fd5b9190910192915050565b6000808335601e198436030181126154ec57600080fd5b8301803591506001600160401b0382111561550657600080fd5b602001915036819003821315614e5c57600080fd5b601f821115610f7a576000816000526020600020601f850160051c810160208610156155445750805b601f850160051c820191505b8181101561377557828155600101615550565b6001600160401b0383111561557a5761557a614970565b61558e836155888354615390565b8361551b565b6000601f8411600181146155c257600085156155aa5750838201355b600019600387901b1c1916600186901b178355613165565b600083815260209020601f19861690835b828110156155f357868501358255602094850194600190920191016155d3565b50868210156156105760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a082013560058201556006810160c083013561566a8161495b565b81546001600160a01b0319166001600160a01b039190911617905561569260e08301836154d5565b611d87818360078601615563565b6000808335601e198436030181126156b757600080fd5b83016020810192503590506001600160401b038111156156d657600080fd5b803603821315614e5c57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408082528181018490526000906060808401600587901b850182018885805b8a8110156157e057888403605f190185528235368d900360fe19018112615753578283fd5b8c018035855260208082013581870152888201358987015287820135888701526080808301359087015260a080830135908701526101009060c08084013561579a8161495b565b6001600160a01b03169088015260e06157b5848201856156a0565b945083828a01526157c9848a0186836156e5565b99830199985050509490940193505060010161572e565b5050508615156020870152935061167f92505050565b6000806040838503121561580957600080fd5b82516001600160401b0381111561581f57600080fd5b8301601f8101851361583057600080fd5b805161583e6149fc826149b6565b81815286602083850101111561585357600080fd5b615864826020830160208601614ab5565b60209590950151949694955050505050565b60008551615888818460208a01614ab5565b820184868237909301918252506020019392505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b81810381811115610e1d57610e1d615435565b6000816158e7576158e7615435565b506000190190565b60008251615901818460208701614ab5565b600360fc1b920191825250600101919050565b60008351615926818460208801614ab5565b83519083019061593a818360208801614ab5565b01949350505050565b6000806040838503121561595657600080fd5b82356001600160401b0381111561596c57600080fd5b615978858286016149dd565b95602094909401359450505050565b82848237909101908152602001919050565b81516001600160401b038111156159b2576159b2614970565b6159c6816159c08454615390565b8461551b565b602080601f8311600181146159fb57600084156159e35750858301515b600019600386901b1c1916600185901b178555613775565b600085815260208120601f198616915b82811015615a2a57888601518255948401946001909101908401615a0b565b5085821015615a485787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b7402832b936b4b9b9b4b7b7399d1030b1b1b7bab73a1605d1b815260008351615a88816015850160208801614ab5565b7001034b99036b4b9b9b4b733903937b6329607d1b6015918401918201528351615ab9816026840160208801614ab5565b01602601949350505050565b604081526000615ad86040830185614ad9565b8281036020840152615aea8185614ad9565b95945050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612afb90830184614ad9565b600060208284031215615b3857600080fd5b81516122bf81614a82565b600060018201615b5557615b55615435565b5060010190565b600082615b6b57615b6b61548b565b500690565b858152606060208201526000615b8a6060830186886156e5565b8281036040840152614d358185876156e5565b600082516154cb818460208701614ab5565b600060208284031215615bc157600080fd5b81516122bf81614e6356fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ca1079825d807f91572e23f6f5bca3074319e622660a9330a3479af540a967ad64736f6c63430008170033000000000000000000000000195fce941ae0c972b8dc814d2059537b67f1403800000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000195fce941ae0c972b8dc814d2059537b67f14038000000000000000000000000000000000000000000000000000172cf23cb53f6000000000000000000000000195fce941ae0c972b8dc814d2059537b67f1403800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000000e63727970746f7061696e7465722000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054350343230000000000000000000000000000000000000000000000000000000