0 txs
0 calls
constructor
constructor(string name, string symbol, address[] allowedSeaDrop)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
baseURI
viewfunction baseURI() view returns (string)
contractURI
viewfunction contractURI() view returns (string)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getMintStats
viewfunction getMintStats(address minter) view returns (uint256 minterNumMinted, uint256 currentTotalSupply, uint256 maxSupply)
getTransferValidationFunction
purefunction getTransferValidationFunction() pure returns (bytes4 functionSignature, bool isViewFunction)
getTransferValidator
viewfunction getTransferValidator() view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
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)
provenanceHash
viewfunction provenanceHash() view returns (bytes32)
royaltyAddress
viewfunction royaltyAddress() view returns (address)
royaltyBasisPoints
viewfunction royaltyBasisPoints() view returns (uint256)
royaltyInfo
viewfunction royaltyInfo(uint256, uint256 _salePrice) view returns (address receiver, uint256 royaltyAmount)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId)
cancelOwnershipTransfer
nonpayablefunction cancelOwnershipTransfer()
emitBatchMetadataUpdate
nonpayablefunction emitBatchMetadataUpdate(uint256 fromTokenId, uint256 toTokenId)
mintSeaDrop
nonpayablefunction mintSeaDrop(address minter, uint256 quantity)
multiConfigure
nonpayablefunction multiConfigure(tuple config)
renounceOwnership
nonpayablefunction renounceOwnership()
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)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setContractURI
nonpayablefunction setContractURI(string newContractURI)
setMaxSupply
nonpayablefunction setMaxSupply(uint256 newMaxSupply)
setProvenanceHash
nonpayablefunction setProvenanceHash(bytes32 newProvenanceHash)
setRoyaltyInfo
nonpayablefunction setRoyaltyInfo(tuple newInfo)
setTransferValidator
nonpayablefunction setTransferValidator(address newValidator)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newPotentialOwner)
updateAllowedFeeRecipient
nonpayablefunction updateAllowedFeeRecipient(address seaDropImpl, address feeRecipient, bool allowed)
updateAllowedSeaDrop
nonpayablefunction updateAllowedSeaDrop(address[] allowedSeaDrop)
updateAllowList
nonpayablefunction updateAllowList(address seaDropImpl, tuple allowListData)
updateCreatorPayoutAddress
nonpayablefunction updateCreatorPayoutAddress(address seaDropImpl, address payoutAddress)
updateDropURI
nonpayablefunction updateDropURI(address seaDropImpl, string dropURI)
updatePayer
nonpayablefunction updatePayer(address seaDropImpl, address payer, bool allowed)
updatePublicDrop
nonpayablefunction updatePublicDrop(address seaDropImpl, tuple publicDrop)
updateSignedMintValidationParams
nonpayablefunction updateSignedMintValidationParams(address seaDropImpl, address signer, tuple signedMintValidationParams)
updateTokenGatedDrop
nonpayablefunction updateTokenGatedDrop(address seaDropImpl, address allowedNftToken, tuple dropStage)
events
AllowedSeaDropUpdated
event AllowedSeaDropUpdated(address[] allowedSeaDrop)
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)
ConsecutiveTransfer
event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to)
ContractURIUpdated
event ContractURIUpdated(string newContractURI)
MaxSupplyUpdated
event MaxSupplyUpdated(uint256 newMaxSupply)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
PotentialOwnerUpdated
event PotentialOwnerUpdated(address newPotentialAdministrator)
ProvenanceHashUpdated
event ProvenanceHashUpdated(bytes32 previousHash, bytes32 newHash)
RoyaltyInfoUpdated
event RoyaltyInfoUpdated(address receiver, uint256 bps)
SeaDropTokenDeployed
event SeaDropTokenDeployed()
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransferValidatorUpdated
event TransferValidatorUpdated(address oldValidator, address newValidator)
errors
AlreadyInitialized
error AlreadyInitialized()
ApprovalCallerNotOwnerNorApproved
error ApprovalCallerNotOwnerNorApproved()
ApprovalQueryForNonexistentToken
error ApprovalQueryForNonexistentToken()
BalanceQueryForZeroAddress
error BalanceQueryForZeroAddress()
CannotExceedMaxSupplyOfUint64
error CannotExceedMaxSupplyOfUint64(uint256 newMaxSupply)
InvalidRoyaltyBasisPoints
error InvalidRoyaltyBasisPoints(uint256 basisPoints)
MintERC2309QuantityExceedsLimit
error MintERC2309QuantityExceedsLimit()
MintQuantityExceedsMaxSupply
error MintQuantityExceedsMaxSupply(uint256 total, uint256 maxSupply)
MintToZeroAddress
error MintToZeroAddress()
MintZeroQuantity
error MintZeroQuantity()
NewOwnerIsZeroAddress
error NewOwnerIsZeroAddress()
NotNextOwner
error NotNextOwner()
OnlyAllowedSeaDrop
error OnlyAllowedSeaDrop()
OnlyOwner
error OnlyOwner()
OwnerQueryForNonexistentToken
error OwnerQueryForNonexistentToken()
OwnershipNotInitializedForExtraData
error OwnershipNotInitializedForExtraData()
ProvenanceHashCannotBeSetAfterMintStarted
error ProvenanceHashCannotBeSetAfterMintStarted()
RoyaltyAddressCannotBeZeroAddress
error RoyaltyAddressCannotBeZeroAddress()
SameTransferValidator
error SameTransferValidator()
SignersMismatch
error SignersMismatch()
TokenGatedMismatch
error TokenGatedMismatch()
TransferCallerNotOwnerNorApproved
error TransferCallerNotOwnerNorApproved()
TransferFromIncorrectOwner
error TransferFromIncorrectOwner()
TransferToNonERC721ReceiverImplementer
error TransferToNonERC721ReceiverImplementer()
TransferToZeroAddress
error TransferToZeroAddress()
URIQueryForNonexistentToken
error URIQueryForNonexistentToken()
creation bytecode
0x608060405260016010553480156200001657600080fd5b506040516200525a3803806200525a8339810160408190526200003991620002f8565b82828181818160026200004d83826200049e565b5060036200005c82826200049e565b5060016000555062000072925050620001229050565b5050805160005b81811015620000d8576001601160008584815181106200009d576200009d6200056a565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905560010162000079565b508151620000ee906012906020850190620001a1565b506040517fd7aca75208b9be5ffc04c6a01922020ffd62b55e68e502e317f5344960279af890600090a15050505062000580565b303b15620001425760405162dc149f60e41b815260040160405180910390fd5b6200014d336200014f565b565b600980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054828255906000526020600020908101928215620001f9579160200282015b82811115620001f957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620001c2565b50620002079291506200020b565b5090565b5b808211156200020757600081556001016200020c565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000263576200026362000222565b604052919050565b600082601f8301126200027d57600080fd5b81516001600160401b0381111562000299576200029962000222565b6020620002af601f8301601f1916820162000238565b8281528582848701011115620002c457600080fd5b60005b83811015620002e4578581018301518282018401528201620002c7565b506000928101909101919091529392505050565b6000806000606084860312156200030e57600080fd5b83516001600160401b03808211156200032657600080fd5b62000334878388016200026b565b94506020915081860151818111156200034c57600080fd5b6200035a888289016200026b565b9450506040860151818111156200037057600080fd5b8601601f810188136200038257600080fd5b80518281111562000397576200039762000222565b8060051b9250620003aa84840162000238565b818152928201840192848101908a851115620003c557600080fd5b928501925b84841015620003ff57835192506001600160a01b0383168314620003ee5760008081fd5b8282529285019290850190620003ca565b8096505050505050509250925092565b600181811c908216806200042457607f821691505b6020821081036200044557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200049957600081815260208120601f850160051c81016020861015620004745750805b601f850160051c820191505b81811015620004955782815560010162000480565b5050505b505050565b81516001600160401b03811115620004ba57620004ba62000222565b620004d281620004cb84546200040f565b846200044b565b602080601f8311600181146200050a5760008415620004f15750858301515b600019600386901b1c1916600185901b17855562000495565b600085815260208120601f198616915b828110156200053b578886015182559484019460019091019084016200051a565b50858210156200055a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b614cca80620005906000396000f3fe608060405234801561001057600080fd5b50600436106103205760003560e01c80636c0360eb116101a7578063a22cb465116100ee578063c87b56dd11610097578063e8a3d48511610071578063e8a3d48514610736578063e985e9c51461073e578063f2fde38b1461075157600080fd5b8063c87b56dd14610708578063cb743ba81461071b578063d5abeb011461072e57600080fd5b8063ad2f852a116100c8578063ad2f852a146106cf578063b88d4fde146106ed578063c6ab67a31461070057600080fd5b8063a22cb46514610696578063a4830114146106a9578063a9fc664e146106bc57600080fd5b80637bc2be7611610150578063911f456b1161012a578063911f456b14610668578063938e3d7b1461067b57806395d89b411461068e57600080fd5b80637bc2be7614610609578063840e15d41461061c5780638da5cb5b1461064a57600080fd5b8063715018a611610181578063715018a6146105e657806379ba5097146105ee5780637a05bc82146105f657600080fd5b80636c0360eb146105b85780636f8b44b0146105c057806370a08231146105d357600080fd5b80633680620d1161026b578063511aa644116102145780636352211e116101ee5780636352211e1461057f57806364869dad1461059257806366251b69146105a557600080fd5b8063511aa6441461054657806355f804b31461055957806360c308b61461056c57600080fd5b806342966c681161024557806342966c681461050d57806344dae42c1461052057806348a4c1011461053357600080fd5b80633680620d146104b957806342260b5d146104cc57806342842e0e146104fa57600080fd5b80630d705df6116102cd57806323452b9c116102a757806323452b9c1461045f57806323b872dd146104675780632a55205a1461047a57600080fd5b80630d705df6146103e057806318160ddd146104145780631b73593c1461044c57600080fd5b8063095ea7b3116102fe578063095ea7b31461039a578063098144d4146103af578063099b6bfa146103cd57600080fd5b806301ffc9a71461032557806306fdde031461034d578063081812fc14610362575b600080fd5b6103386103333660046137d4565b610764565b60405190151581526020015b60405180910390f35b61035561080c565b604051610344919061385f565b610375610370366004613872565b61089e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610344565b6103ad6103a83660046138ad565b610908565b005b60085473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6103db366004613872565b6109f3565b604080517fcaee23ea0000000000000000000000000000000000000000000000000000000081526000602082015201610344565b600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b604051908152602001610344565b6103ad61045a3660046138d9565b610a9d565b6103ad610b36565b6103ad610475366004613938565b610b9c565b61048d610488366004613979565b610e3f565b6040805173ffffffffffffffffffffffffffffffffffffffff9093168352602083019190915201610344565b6103ad6104c736600461399b565b610ea8565b600f547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1661043e565b6103ad610508366004613938565b610f0b565b6103ad61051b366004613872565b610f2b565b6103ad61052e3660046139f2565b610f39565b6103ad610541366004613a1f565b6110aa565b6103ad610554366004613b61565b61114a565b6103ad610567366004613c97565b6111af565b6103ad61057a366004613cd9565b611243565b61037561058d366004613872565b611255565b6103ad6105a03660046138ad565b611260565b6103ad6105b3366004613d4e565b6113a0565b610355611405565b6103ad6105ce366004613872565b611414565b61043e6105e1366004613d7c565b611496565b6103ad611518565b6103ad61152c565b6103ad610604366004613d99565b6115e3565b6103ad610617366004613dee565b611648565b61062f61062a366004613d7c565b6116ad565b60408051938452602084019290925290820152606001610344565b60095473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad610676366004613e61565b61171a565b6103ad610689366004613c97565b6124b5565b6103556124fc565b6103ad6106a4366004613e9d565b61250b565b6103ad6106b7366004613979565b6125a2565b6103ad6106ca366004613d7c565b6125e0565b600f5473ffffffffffffffffffffffffffffffffffffffff16610375565b6103ad6106fb366004613ed2565b6125f1565b600e5461043e565b610355610716366004613872565b612661565b6103ad610729366004613a1f565b612786565b600b5461043e565b6103556127f3565b61033861074c366004613d4e565b612802565b6103ad61075f366004613d7c565b612887565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f1890fe8e0000000000000000000000000000000000000000000000000000000014806107f757507fffffffff0000000000000000000000000000000000000000000000000000000082167f9c15441500000000000000000000000000000000000000000000000000000000145b8061080657506108068261294f565b92915050565b60606002805461081b90613fb4565b80601f016020809104026020016040519081016040528092919081815260200182805461084790613fb4565b80156108945780601f1061086957610100808354040283529160200191610894565b820191906000526020600020905b81548152906001019060200180831161087757829003601f168201915b5050505050905090565b60006108a982612a89565b6108df576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060009081526006602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061091382611255565b90503373ffffffffffffffffffffffffffffffffffffffff8216146109725761093c8133612802565b610972576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6109fb612ad7565b6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0115610a57576040517fe03264af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e80549082905560408051828152602081018490527f7c22004198bf87da0f0dab623c72e66ca1200f4454aa3b9ca30f436275428b7c91015b60405180910390a15050565b610aa5612ad7565b610aae82612b67565b6040517f01308e6500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906301308e6590610b009084906004016140a1565b600060405180830381600087803b158015610b1a57600080fd5b505af1158015610b2e573d6000803e3d6000fd5b505050505050565b610b3e612bcb565b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1565b6000610ba782612c1c565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c0e576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008281526006602052604090208054610c478187335b73ffffffffffffffffffffffffffffffffffffffff9081169116811491141790565b610c8b57610c558633612802565b610c8b576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610cd8576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ce58686866001612cdb565b8015610cf057600082555b73ffffffffffffffffffffffffffffffffffffffff86811660009081526005602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055918716808252919020805460010190554260a01b177c0200000000000000000000000000000000000000000000000000000000176000858152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000084169003610ddf57600184016000818152600460205260408120549003610ddd576000548114610ddd5760008181526004602052604090208490555b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610b2e565b600f8054600091829161271090610e7c907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16866140de565b610e8691906140f5565b905473ffffffffffffffffffffffffffffffffffffffff169590945092505050565b610eb0612ad7565b610eb982612b67565b6040517febb4a55f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063ebb4a55f90610b009084906004016142ed565b610f26838383604051806020016040528060008152506125f1565b505050565b610f36816001612dd5565b50565b610f41612ad7565b6000610f506020830183613d7c565b73ffffffffffffffffffffffffffffffffffffffff1603610f9d576040517f1cc0baef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612710610fb0604083016020840161431a565b6bffffffffffffffffffffffff16111561101c57610fd4604082016020830161431a565b6040517f3cadbafb0000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff90911660048201526024015b60405180910390fd5b80600f6110298282614337565b507ff21fccf4d64d86d532c4e4eb86c007b6ad57a460c27d724188625e755ec6cf6d905061105a6020830183613d7c565b61106a604084016020850161431a565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526bffffffffffffffffffffffff9091166020830152015b60405180910390a150565b6110b2612ad7565b6110bb83612b67565b6040517f8e7d1e4300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690638e7d1e43906044015b600060405180830381600087803b15801561112d57600080fd5b505af1158015611141573d6000803e3d6000fd5b50505050505050565b611152612ad7565b61115b83612b67565b6040517f4d38017800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841690634d38017890611113908590859060040161439c565b6111b7612ad7565b600c6111c4828483614476565b50600154600054037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff011561123f577f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c60018061122060005490565b61122a9190614590565b60408051928352602083019190915201610a91565b5050565b61124b612bcb565b61123f8282612f92565b600061080682612c1c565b6010546001146112cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5245454e5452414e4359000000000000000000000000000000000000000000006044820152606401611013565b60026010556112da33612b67565b600b54816113096000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61131391906145a3565b111561138d57806113456000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b61134f91906145a3565b600b546040517fe12d231400000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401611013565b6113978282613102565b50506001601055565b6113a8612ad7565b6113b182612b67565b6040517f12738db800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301528316906312738db890602401610b00565b606061140f61311c565b905090565b61141c612ad7565b67ffffffffffffffff811115611461576040517fb43e913700000000000000000000000000000000000000000000000000000000815260048101829052602401611013565b600b8190556040518181527f7810bd47de260c3e9ee10061cf438099dd12256c79485f12f94dbccc981e806c9060200161109f565b600073ffffffffffffffffffffffffffffffffffffffff82166114e5576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526005602052604090205467ffffffffffffffff1690565b611520612bcb565b61152a600061312b565b565b600a5473ffffffffffffffffffffffffffffffffffffffff1633811461157e576040517fd6eb09ce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055604051600081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200160405180910390a1610f368161312b565b6115eb612ad7565b6115f483612b67565b6040517fb957d0cb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063b957d0cb9061111390859085906004016145b6565b611650612ad7565b61165983612b67565b6040517ffd9ab22a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063fd9ab22a90611113908590859060040161469b565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604080822054901c67ffffffffffffffff16908061170d6000547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600b549395909450915050565b611722612bcb565b803515611794576040517f6f8b44b0000000000000000000000000000000000000000000000000000000008152813560048201523090636f8b44b090602401600060405180830381600087803b15801561177b57600080fd5b505af115801561178f573d6000803e3d6000fd5b505050505b6117a160208201826146c6565b15905061180b57306355f804b36117bb60208401846146c6565b6040518363ffffffff1660e01b81526004016117d89291906145b6565b600060405180830381600087803b1580156117f257600080fd5b505af1158015611806573d6000803e3d6000fd5b505050505b61181860408201826146c6565b159050611882573063938e3d7b61183260408401846146c6565b6040518363ffffffff1660e01b815260040161184f9291906145b6565b600060405180830381600087803b15801561186957600080fd5b505af115801561187d573d6000803e3d6000fd5b505050505b6118a261189560e0830160c0840161472b565b65ffffffffffff16151590565b6118b561189560c0840160a0850161472b565b176001036119275730631b73593c6118d36080840160608501613d7c565b836080016040518363ffffffff1660e01b81526004016118f4929190614746565b600060405180830381600087803b15801561190e57600080fd5b505af1158015611922573d6000803e3d6000fd5b505050505b6119356101408201826146c6565b1590506119b15730637a05bc826119526080840160608501613d7c565b6119606101408501856146c6565b6040518463ffffffff1660e01b815260040161197e93929190614770565b600060405180830381600087803b15801561199857600080fd5b505af11580156119ac573d6000803e3d6000fd5b505050505b60006119c16101608301836147a9565b3514611a3b5730633680620d6119dd6080840160608501613d7c565b6119eb6101608501856147a9565b6040518363ffffffff1660e01b8152600401611a089291906147e7565b600060405180830381600087803b158015611a2257600080fd5b505af1158015611a36573d6000803e3d6000fd5b505050505b6000611a4f6101a083016101808401613d7c565b73ffffffffffffffffffffffffffffffffffffffff1614611b1857306366251b69611a806080840160608501613d7c565b611a926101a085016101808601613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050505b6101a081013515611b92576040517f099b6bfa0000000000000000000000000000000000000000000000000000000081526101a08201356004820152309063099b6bfa90602401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b505050505b6000611ba26101c0830183614816565b90501115611ca65760005b611bbb6101c0830183614816565b9050811015611ca457306348a4c101611bda6080850160608601613d7c565b611be86101c0860186614816565b85818110611bf857611bf861487e565b9050602002016020810190611c0d9190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611c8157600080fd5b505af1158015611c95573d6000803e3d6000fd5b50505050806001019050611bad565b505b6000611cb66101e0830183614816565b90501115611dba5760005b611ccf6101e0830183614816565b9050811015611db857306348a4c101611cee6080850160608601613d7c565b611cfc6101e0860186614816565b85818110611d0c57611d0c61487e565b9050602002016020810190611d219190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b50505050806001019050611cc1565b505b6000611dca610200830183614816565b90501115611ece5760005b611de3610200830183614816565b9050811015611ecc573063cb743ba8611e026080850160608601613d7c565b611e10610200860186614816565b85818110611e2057611e2061487e565b9050602002016020810190611e359190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260016044820152606401600060405180830381600087803b158015611ea957600080fd5b505af1158015611ebd573d6000803e3d6000fd5b50505050806001019050611dd5565b505b6000611ede610220830183614816565b90501115611fe25760005b611ef7610220830183614816565b9050811015611fe0573063cb743ba8611f166080850160608601613d7c565b611f24610220860186614816565b85818110611f3457611f3461487e565b9050602002016020810190611f499190613d7c565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff92831660048201529116602482015260006044820152606401600060405180830381600087803b158015611fbd57600080fd5b505af1158015611fd1573d6000803e3d6000fd5b50505050806001019050611ee9565b505b6000611ff26102608301836148ad565b9050111561213657612008610240820182614816565b90506120186102608301836148ad565b905014612051576040517fb81aa63900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6120626102608301836148ad565b90508110156121345730637bc2be766120816080850160608601613d7c565b61208f610240860186614816565b8581811061209f5761209f61487e565b90506020020160208101906120b49190613d7c565b6120c26102608701876148ad565b868181106120d2576120d261487e565b905061010002016040518463ffffffff1660e01b81526004016120f793929190614915565b600060405180830381600087803b15801561211157600080fd5b505af1158015612125573d6000803e3d6000fd5b50505050806001019050612054565b505b6000612146610280830183614816565b905011156122515760005b61215f610280830183614816565b905081101561224f576040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915230637bc2be766121bf6080860160608701613d7c565b6121cd610280870187614816565b868181106121dd576121dd61487e565b90506020020160208101906121f29190613d7c565b846040518463ffffffff1660e01b815260040161221193929190614948565b600060405180830381600087803b15801561222b57600080fd5b505af115801561223f573d6000803e3d6000fd5b5050505081600101915050612151565b505b60006122616102c0830183614a0b565b905011156123a4576122776102a0820182614816565b90506122876102c0830183614a0b565b9050146122c0576040517f74ef6df700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b6122d16102c0830183614a0b565b90508110156123a2573063511aa6446122f06080850160608601613d7c565b6122fe6102a0860186614816565b8581811061230e5761230e61487e565b90506020020160208101906123239190613d7c565b6123316102c0870187614a0b565b868181106123415761234161487e565b905060e002016040518463ffffffff1660e01b815260040161236593929190614a72565b600060405180830381600087803b15801561237f57600080fd5b505af1158015612393573d6000803e3d6000fd5b505050508060010190506122c3565b505b60006123b46102e0830183614816565b90501115610f365760005b6123cd6102e0830183614816565b905081101561123f576040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091523063511aa6446124256080860160608701613d7c565b6124336102e0870187614816565b868181106124435761244361487e565b90506020020160208101906124589190613d7c565b846040518463ffffffff1660e01b815260040161247793929190614b3b565b600060405180830381600087803b15801561249157600080fd5b505af11580156124a5573d6000803e3d6000fd5b50505050816001019150506123bf565b6124bd612ad7565b600d6124ca828483614476565b507f905d981207a7d0b6c62cc46ab0be2a076d0298e4a86d0ab79882dbd01ac373788282604051610a919291906145b6565b60606003805461081b90613fb4565b33600081815260076020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6125aa612ad7565b60408051838152602081018390527f6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c9101610a91565b6125e8612bcb565b610f36816131a2565b6125fc848484610b9c565b73ffffffffffffffffffffffffffffffffffffffff83163b1561265b5761262584848484613275565b61265b576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061266c82612a89565b6126a2576040517fa14c4b5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006126ac61311c565b905080516000036126cd575050604080516020810190915260008152919050565b6040805180820190915260018082527f2f0000000000000000000000000000000000000000000000000000000000000060209092018290528251839161271291614590565b815181106127225761272261487e565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016146127545792915050565b8061275e846133ef565b60405160200161276f929190614bd7565b604051602081830303815290604052915050919050565b61278e612ad7565b61279783612b67565b6040517f7f2a5cca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528215156024830152841690637f2a5cca90604401611113565b6060600d805461081b90613fb4565b60007fffffffffffffffffffffffffe1ffb687c0ff75ff7ae6c1ffffc2ff32abffc38f73ffffffffffffffffffffffffffffffffffffffff83160161284957506001610806565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526007602090815260408083209386168352929052205460ff165b9392505050565b61288f612bcb565b73ffffffffffffffffffffffffffffffffffffffff81166128dc576040517f7448fbae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f11a3cf439fb225bfe74225716b6774765670ec1060e3796802e62139d69974da9060200161109f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a0000000000000000000000000000000000000000000000000000000014806129e257507fffffffff0000000000000000000000000000000000000000000000000000000082167fad0d7f6c00000000000000000000000000000000000000000000000000000000145b80612a2e57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa07d229a00000000000000000000000000000000000000000000000000000000145b80612a7a57507f49064906000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b80610806575061080682613451565b600081600111158015612a9d575060005482105b80156108065750506000908152600460205260409020547c0100000000000000000000000000000000000000000000000000000000161590565b303314612b2d612afc60095473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161490565b1760000361152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205460ff161515600114610f36576040517f15e26ff300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095473ffffffffffffffffffffffffffffffffffffffff16331461152a576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008180600111612ca957600054811015612ca957600081815260046020526040812054907c010000000000000000000000000000000000000000000000000000000082169003612ca7575b8060000361288057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600081815260046020526040902054612c68565b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841615801590612d15575073ffffffffffffffffffffffffffffffffffffffff831615155b1561265b5760085473ffffffffffffffffffffffffffffffffffffffff168015612dce576040517fcaee23ea00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff868116602483015285811660448301526064820185905282169063caee23ea9060840160006040518083038186803b158015612db557600080fd5b505afa158015612dc9573d6000803e3d6000fd5b505050505b5050505050565b6000612de083612c1c565b905080600080612dfe86600090815260066020526040902080549091565b915091508415612e5757612e13818433610c25565b612e5757612e218333612802565b612e57576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e65836000886001612cdb565b8015612e7057600082555b73ffffffffffffffffffffffffffffffffffffffff8316600081815260056020526040902080546fffffffffffffffffffffffffffffffff0190554260a01b177c0300000000000000000000000000000000000000000000000000000000176000878152600460205260408120919091557c020000000000000000000000000000000000000000000000000000000085169003612f3d57600186016000818152600460205260408120549003612f3b576000548114612f3b5760008181526004602052604090208590555b505b604051869060009073ffffffffffffffffffffffffffffffffffffffff8616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050600180548101905550505050565b6012548160005b828110156130215760006011600060128481548110612fba57612fba61487e565b60009182526020808320919091015473ffffffffffffffffffffffffffffffffffffffff168352820192909252604001902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101612f99565b5060005b818110156130b5576001601160008787858181106130455761304561487e565b905060200201602081019061305a9190613d7c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101613025565b506130c260128585613709565b507fbbd3b69c138de4d317d0bc4290282c4e1cbd1e58b579a5b4f114b598c237454d84846040516130f4929190614c06565b60405180910390a150505050565b61123f828260405180602001604052806000815250613532565b6060600c805461081b90613fb4565b6009805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60085473ffffffffffffffffffffffffffffffffffffffff90811690821681036131f8576040517f4a3bb19e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84811691821790925560408051928416835260208301919091527fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac9101610a91565b6040517f150b7a0200000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906132d0903390899088908890600401614c61565b6020604051808303816000875af1925050508015613329575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261332691810190614ca0565b60015b6133a0573d808015613357576040519150601f19603f3d011682016040523d82523d6000602084013e61335c565b606091505b508051600003613398576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490505b949350505050565b606060a06040510180604052602081039150506000815280825b600183039250600a81066030018353600a90048061340957508190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909101908152919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806134e457507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b806108065750507fffffffff00000000000000000000000000000000000000000000000000000000167f5b5e139f000000000000000000000000000000000000000000000000000000001490565b61353c83836135be565b73ffffffffffffffffffffffffffffffffffffffff83163b15610f26576000548281035b6135736000868380600101945086613275565b6135a9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818110613560578160005414612dce57600080fd5b60008054908290036135fc576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136096000848385612cdb565b73ffffffffffffffffffffffffffffffffffffffff831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b8181146136c557808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460010161368d565b5081600003613700576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005550505050565b828054828255906000526020600020908101928215613781579160200282015b828111156137815781547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff843516178255602090920191600190910190613729565b5061378d929150613791565b5090565b5b8082111561378d5760008155600101613792565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114610f3657600080fd5b6000602082840312156137e657600080fd5b8135612880816137a6565b60005b8381101561380c5781810151838201526020016137f4565b50506000910152565b6000815180845261382d8160208601602086016137f1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006128806020830184613815565b60006020828403121561388457600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f3657600080fd5b600080604083850312156138c057600080fd5b82356138cb8161388b565b946020939093013593505050565b60008082840360e08112156138ed57600080fd5b83356138f88161388b565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201121561392a57600080fd5b506020830190509250929050565b60008060006060848603121561394d57600080fd5b83356139588161388b565b925060208401356139688161388b565b929592945050506040919091013590565b6000806040838503121561398c57600080fd5b50508035926020909101359150565b600080604083850312156139ae57600080fd5b82356139b98161388b565b9150602083013567ffffffffffffffff8111156139d557600080fd5b8301606081860312156139e757600080fd5b809150509250929050565b600060408284031215613a0457600080fd5b50919050565b80358015158114613a1a57600080fd5b919050565b600080600060608486031215613a3457600080fd5b8335613a3f8161388b565b92506020840135613a4f8161388b565b9150613a5d60408501613a0a565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715613ab857613ab8613a66565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b0557613b05613a66565b604052919050565b803569ffffffffffffffffffff81168114613a1a57600080fd5b803562ffffff81168114613a1a57600080fd5b803564ffffffffff81168114613a1a57600080fd5b803561ffff81168114613a1a57600080fd5b6000806000838503610120811215613b7857600080fd5b8435613b838161388b565b93506020850135613b938161388b565b925060e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613bc557600080fd5b50613bce613a95565b613bda60408601613b0d565b8152613be860608601613b27565b6020820152613bf960808601613b3a565b6040820152613c0a60a08601613b3a565b6060820152613c1b60c08601613b3a565b6080820152613c2c60e08601613b4f565b60a0820152613c3e6101008601613b4f565b60c0820152809150509250925092565b60008083601f840112613c6057600080fd5b50813567ffffffffffffffff811115613c7857600080fd5b602083019150836020828501011115613c9057600080fd5b9250929050565b60008060208385031215613caa57600080fd5b823567ffffffffffffffff811115613cc157600080fd5b613ccd85828601613c4e565b90969095509350505050565b60008060208385031215613cec57600080fd5b823567ffffffffffffffff80821115613d0457600080fd5b818501915085601f830112613d1857600080fd5b813581811115613d2757600080fd5b8660208260051b8501011115613d3c57600080fd5b60209290920196919550909350505050565b60008060408385031215613d6157600080fd5b8235613d6c8161388b565b915060208301356139e78161388b565b600060208284031215613d8e57600080fd5b81356128808161388b565b600080600060408486031215613dae57600080fd5b8335613db98161388b565b9250602084013567ffffffffffffffff811115613dd557600080fd5b613de186828701613c4e565b9497909650939450505050565b6000806000838503610140811215613e0557600080fd5b8435613e108161388b565b93506020850135613e208161388b565b92506101007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613e5357600080fd5b506040840190509250925092565b600060208284031215613e7357600080fd5b813567ffffffffffffffff811115613e8a57600080fd5b8201610300818503121561288057600080fd5b60008060408385031215613eb057600080fd5b8235613ebb8161388b565b9150613ec960208401613a0a565b90509250929050565b60008060008060808587031215613ee857600080fd5b8435613ef38161388b565b9350602085810135613f048161388b565b935060408601359250606086013567ffffffffffffffff80821115613f2857600080fd5b818801915088601f830112613f3c57600080fd5b813581811115613f4e57613f4e613a66565b613f7e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613abe565b91508082528984828501011115613f9457600080fd5b808484018584013760008482840101525080935050505092959194509250565b600181811c90821680613fc857607f821691505b602082108103613a04577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b803565ffffffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff61402b82613b0d565b16825261403a60208201614001565b65ffffffffffff80821660208501528061405660408501614001565b166040850152505061406a60608201613b4f565b61ffff80821660608501528061408260808501613b4f565b166080850152505061409660a08201613a0a565b151560a08301525050565b60c081016108068284614017565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610806576108066140af565b60008261412b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126141ae57600080fd5b830160208101925035905067ffffffffffffffff8111156141ce57600080fd5b803603821315613c9057600080fd5b600060608301823584526020808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe185360301811261421d57600080fd5b8401818101903567ffffffffffffffff81111561423957600080fd5b8060051b80360383131561424c57600080fd5b6060848901529381905260809387018401938290880160005b838110156142bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a880301825261429e8386614179565b6142a9898284614130565b985050509185019190850190600101614265565b5050505050506142d06040840184614179565b85830360408701526142e3838284614130565b9695505050505050565b60208152600061288060208301846141dd565b6bffffffffffffffffffffffff81168114610f3657600080fd5b60006020828403121561432c57600080fd5b813561288081614300565b81356143428161388b565b73ffffffffffffffffffffffffffffffffffffffff811690507fffffffffffffffffffffffff00000000000000000000000000000000000000008181845416178355602084013561439281614300565b60a01b1617905550565b73ffffffffffffffffffffffffffffffffffffffff831681526101008101612880602083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b601f821115610f2657600081815260208120601f850160051c810160208610156144575750805b601f850160051c820191505b81811015610b2e57828155600101614463565b67ffffffffffffffff83111561448e5761448e613a66565b6144a28361449c8354613fb4565b83614430565b6000601f8411600181146144f457600085156144be5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355612dce565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156145435786850135825560209485019460019092019101614523565b508682101561457e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610806576108066140af565b80820180821115610806576108066140af565b6020815260006133e7602083018486614130565b803563ffffffff81168114613a1a57600080fd5b69ffffffffffffffffffff6145f282613b0d565b16825261ffff61460460208301613b4f565b16602083015261461660408201614001565b65ffffffffffff80821660408501528061463260608501614001565b1660608501525050608081013560ff8116811461464e57600080fd5b60ff16608083015261466260a082016145ca565b63ffffffff1660a083015261467960c08201613b4f565b61ffff1660c083015261468e60e08201613a0a565b80151560e0840152505050565b73ffffffffffffffffffffffffffffffffffffffff83168152610120810161288060208301846145de565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126146fb57600080fd5b83018035915067ffffffffffffffff82111561471657600080fd5b602001915036819003821315613c9057600080fd5b60006020828403121561473d57600080fd5b61288082614001565b73ffffffffffffffffffffffffffffffffffffffff8316815260e081016128806020830184614017565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006147a0604083018486614130565b95945050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181126147dd57600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006133e760408301846141dd565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261484b57600080fd5b83018035915067ffffffffffffffff82111561486657600080fd5b6020019150600581901b3603821315613c9057600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126148e257600080fd5b83018035915067ffffffffffffffff8211156148fd57600080fd5b6020019150600881901b3603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261014081016133e760408301846145de565b60006101408201905073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525069ffffffffffffffffffff835116604083015261ffff602084015116606083015265ffffffffffff604084015116608083015260608301516149c060a084018265ffffffffffff169052565b50608083015160ff811660c08401525060a083015163ffffffff811660e08401525060c083015161ffff81166101008401525060e08301518015156101208401525b50949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a4057600080fd5b83018035915067ffffffffffffffff821115614a5b57600080fd5b602001915060e081023603821315613c9057600080fd5b73ffffffffffffffffffffffffffffffffffffffff848116825283166020820152610120810169ffffffffffffffffffff614aac84613b0d565b16604083015262ffffff614ac260208501613b27565b166060830152614ad460408401613b3a565b64ffffffffff808216608085015280614aef60608701613b3a565b1660a085015280614b0260808701613b3a565b1660c08501525050614b1660a08401613b4f565b61ffff1660e0830152614b2b60c08401613b4f565b61ffff8116610100840152614a02565b73ffffffffffffffffffffffffffffffffffffffff84811682528316602082015261012081016133e7604083018469ffffffffffffffffffff815116825262ffffff6020820151166020830152604081015164ffffffffff8082166040850152806060840151166060850152806080840151166080850152505060a081015161ffff80821660a08501528060c08401511660c085015250505050565b60008351614be98184602088016137f1565b835190830190614bfd8183602088016137f1565b01949350505050565b60208082528181018390526000908460408401835b86811015614c56578235614c2e8161388b565b73ffffffffffffffffffffffffffffffffffffffff1682529183019190830190600101614c1b565b509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526142e36080830184613815565b600060208284031215614cb257600080fd5b8151612880816137a656fea164736f6c6343000811000a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000e486170707920446f67652046756e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034844460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000005ea00ac477b1030ce78506496e8c2de24bf5