0 txs
895 calls
constructor
constructor(address _smtContract)
functions
aggProofVerifierAddress
viewfunction aggProofVerifierAddress(uint64) view returns (address)
aggVkHash
viewfunction aggVkHash() view returns (bytes32)
dummyInputCommitments
viewfunction dummyInputCommitments(uint64) view returns (bytes32)
isActiveProver
viewfunction isActiveProver(address _account) view returns (bool)
isPauser
viewfunction isPauser(address account) view returns (bool)
merkleRoots
viewfunction merkleRoots(bytes32) view returns (bool)
numPausers
viewfunction numPausers() view returns (uint256)
numProvers
viewfunction numProvers() view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pauserList
viewfunction pauserList(uint256) view returns (address)
pausers
viewfunction pausers(address) view returns (bool)
proofs
viewfunction proofs(bytes32) view returns (bytes32)
provers
viewfunction provers(uint256) view returns (address)
proverStates
viewfunction proverStates(address) view returns (uint8)
smtContract
viewfunction smtContract() view returns (address)
validateAggProofData
viewfunction validateAggProofData(uint64 _chainId, tuple _proofData, bytes32 _merkleRoot, bytes32[] _merkleProof, uint8 _nodeIndex) view
validateAggProofData
viewfunction validateAggProofData(uint64 _chainId, tuple[] _proofDataArray) view
validateProofAppData
viewfunction validateProofAppData(bytes32 _proofId, bytes32 _appCommitHash, bytes32 _appVkHash) view returns (bool)
verifierAddresses
viewfunction verifierAddresses(uint64) view returns (address)
addPauser
nonpayablefunction addPauser(address account)
addPausers
nonpayablefunction addPausers(address[] accounts)
addProvers
nonpayablefunction addProvers(address[] _accounts)
init
nonpayablefunction init(address _smtContract)
pause
nonpayablefunction pause()
removePauser
nonpayablefunction removePauser(address account)
removePausers
nonpayablefunction removePausers(address[] accounts)
removeProvers
nonpayablefunction removeProvers(address[] _accounts)
renouncePauser
nonpayablefunction renouncePauser()
setAggVkHash
nonpayablefunction setAggVkHash(bytes32 _aggVkHash)
setDummyInputCommitments
nonpayablefunction setDummyInputCommitments(uint64[] _chainIds, bytes32[] _dummyInputCommitments)
submitAggProof
nonpayablefunction submitAggProof(uint64 _chainId, bytes32[] _proofIds, bytes _proofWithPubInputs)
submitProof
nonpayablefunction submitProof(uint64 _chainId, bytes _proofWithPubInputs) returns (bytes32 proofId, bytes32 appCommitHash, bytes32 appVkHash)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateAggProofVerifierAddresses
nonpayablefunction updateAggProofVerifierAddresses(uint64[] _chainIds, address[] _verifierAddresses)
updateSmtContract
nonpayablefunction updateSmtContract(address _smtContract)
updateVerifierAddress
nonpayablefunction updateVerifierAddress(uint64[] _chainIds, address[] _verifierAddresses)
events
AggProofVerifierAddressesUpdated
event AggProofVerifierAddressesUpdated(uint64[] chainIds, address[] newAddresses)
AggVkHashUpdated
event AggVkHashUpdated(bytes32 aggVkHash)
DummyInputCommitmentsUpdated
event DummyInputCommitmentsUpdated(uint64[] chainIds, bytes32[] updatedDummyInputCommitments)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PauserAdded
event PauserAdded(address account)
PauserRemoved
event PauserRemoved(address account)
ProverAdded
event ProverAdded(address account)
ProverRemoved
event ProverRemoved(address account)
SmtContractUpdated
event SmtContractUpdated(address smtContract)
Unpaused
event Unpaused(address account)
VerifierAddressesUpdated
event VerifierAddressesUpdated(uint64[] chainIds, address[] newAddresses)
errors
No errors.
creation bytecode
0x608034620001b457601f6200296938819003918201601f1916830192916001600160401b03841183851017620001b95780839260409586528339602092839181010312620001b457516001600160a01b03808216929091839003620001b4576000918254855191339082167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08680a36001600160a81b0319163360ff60a01b1981169190911784558352600182528483205460ff1662000174575060025468010000000000000000811015620001605760018101806002558110156200014c5790847f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f89260028552828520019360018060a01b03199433868254161790553381526001835220600160ff198254161790558451338152a16005541617600555516127999081620001d08239f35b634e487b7160e01b83526032600452602483fd5b634e487b7160e01b83526041600452602483fd5b60649162461bcd60e51b82526004820152601960248201527f4163636f756e7420697320616c726561647920706175736572000000000000006044820152fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9081630e8f65f814611888575080631396511e14611812578063158535ff146117e057806319ab453c146117505780633221aec6146117285780633bda38a31461138a5780633f4ba83a14611289578063444d95b01461126257806346fbf68e14610b295780634d02e481146112435780634f4fef181461122657806350d410631461116657806358a16b44146111475780635c975abb14611122578063667a4ac114611024578063677625f214610e935780636b2c0f5514610e5c5780636ef8d66d14610e425780637b1cc45014610c355780637dbafb1114610b6557806380f51c1214610b2957806382dc1ec414610af25780638456cb59146109d95780638da5cb5b146109b357806390178370146109625780639438542614610908578063a036e799146108b8578063b4f7a72714610560578063ceae33901461051f578063e04409531461048a578063e6c6fcec1461043a578063e79b7a51146103e1578063ec64842e14610385578063f2fde38b146102d7578063f5cec6af14610296578063fabc74f514610238578063fd1190ea146101f45763fe5a5377146101c557600080fd5b346101f05760203660031901126101f0578160209360ff923581526006855220541690519015158152f35b8280fd5b509134610235576020366003190112610235578235925483101561023557506001600160a01b03610226602093611926565b92905490519260031b1c168152f35b80fd5b50919034610292576020366003190112610292576001600160a01b0361025c61195d565b168252600360205260ff8183205416905191600382101561027f57602083838152f35b634e487b7160e01b815260218452602490fd5b5080fd5b505034610292576020366003190112610292576001600160a01b038160209367ffffffffffffffff6102c66118bd565b168152600a85522054169051908152f35b50346101f05760203660031901126101f0576102f161195d565b916001600160a01b03610308818654163314611b02565b83161561031c578361031984611daa565b80f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b508234610235576020366003190112610235576001600160a01b036103a861195d565b168152600360205260ff83822054169160038310156103ce576020836001865191148152f35b634e487b7160e01b825260219052602490fd5b8334610235576103f036611a43565b906001600160a01b0391610408838354163314611b02565b815b8151811015610436578061042c856104256104319486611b72565b5116611df2565b611b4d565b61040a565b8280f35b83346102355761044936611a43565b906001600160a01b0391610461838354163314611b02565b815b8151811015610436578061042c8561047e6104859486611b72565b5116611bd2565b610463565b5091346102355781600319360112610235576104a46118bd565b9060243567ffffffffffffffff8111610292576104c49036908601611ad4565b929091338152600360205260ff858220541690600382101561050c576060866104fa8787876104f560018914612096565b612467565b91929081519384526020840152820152f35b634e487b7160e01b815260218752602490fd5b505034610292576020366003190112610292576001600160a01b038160209367ffffffffffffffff61054f6118bd565b168152600785522054169051908152f35b5090346101f05760603660031901126101f05761057b6118bd565b91602467ffffffffffffffff81358181116108b45761059d9036908501611973565b90956044358381116108b0576105b69036908701611ad4565b979094338a526020966003885260ff898c2054169960038b101561089e576105e16001809c14612096565b6105f46105ee828a612411565b9061244a565b976106026105ee8383612424565b956106106105ee8484612437565b6009540361085b5788168d5260078a528a8d20546001600160a01b031690811561081a57918a91610655938d518095819482936322bb937360e11b84528984016120fa565b03915afa9081156108105790610672918d916107e3575b50612122565b88519261020090818501858110898211176107d1578b52813686378c5b8781106107b2575050601095868110610761575b50895195898701948d908d8c885b85851061074c5750505050505085526102208501958587109087111761073b57505083875282519020036106f75750508452600690528220805460ff1916909117905580f35b907f70726f6f66496473206e6f7420726967687400000000000000000000000000006102646064938662461bcd60e51b855261022482015260126102448201520152fd5b634e487b7160e01b8b526041905289fd5b819084518152019201920191908c8f916106b1565b805b87811061077057506106a3565b60001982018281116107a0579061078a61079b928861217e565b51610795828961217e565b52611b4d565b610763565b634e487b7160e01b8f5260118552858ffd5b806107c16107cc928a8561216e565b35610795828961217e565b61068f565b634e487b7160e01b8e5260418452848efd5b61080391508a3d8c11610809575b6107fb8183611a21565b8101906120e2565b3861066c565b503d6107f1565b8a513d8e823e3d90fd5b506064838b86818f519362461bcd60e51b85528401528201527f636861696e206167672070726f6f66207665726966696572206e6f74207365746044820152fd5b508a5162461bcd60e51b81528084018b9052601b818601527f61676720766572696679696e67206b6579206e6f742076616c696400000000006044820152606490fd5b50634e487b7160e01b8b526021905289fd5b8880fd5b8680fd5b8334610235576108c736611a43565b906001600160a01b03916108df838354163314611b02565b815b8151811015610436578061042c856108fc6109039486611b72565b5116611ed8565b6108e1565b50346101f05760203660031901126101f0577f2bd9dd8e16629010f9924be6c73cf4884c5395ef86f10ce3495a9616175fba5d9160209135906109566001600160a01b038654163314611b02565b8160095551908152a180f35b50346101f05760603660031901126101f057816020936109ac92358152600b855220548251848101906024358252604435858201528481526109a3816119ef565b519020146122a1565b5160018152f35b5050346102925781600319360112610292576001600160a01b0360209254169051908152f35b5090346101f057826003193601126101f057338352600191602090838252610a0660ff8487205416611b86565b845460ff8160a01c16610ab05760ff60a01b197401000000000000000000000000000000000000000091161785557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258828451338152a184845b610a67578580f35b8154811015610aac57806001600160a01b03610a85610aa693611926565b919054600392831b1c1688528452848720600260ff19825416179055611b4d565b84610a5f565b8580f35b50915162461bcd60e51b815291820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606490fd5b833461023557602036600319011261023557610319610b0f61195d565b610b246001600160a01b038454163314611b02565b611df2565b5050346102925760203660031901126102925760ff816020936001600160a01b03610b5261195d565b1681526001855220541690519015158152f35b50503461029257610b75366119a4565b91936001600160a01b03610b8d818854163314611b02565b610b988487146122ed565b865b868110610bdb57877f4a5f8b4623084de3ef4b23e6c713416b50a966a1914aaf21175d206015e59d4e8888610bd589898951948594856123ad565b0390a180f35b80610bf2610bed610c3093888861216e565b612339565b67ffffffffffffffff610c0e610c09848c8c61216e565b61234d565b168a52600760205283858b2091166001600160a01b0319825416179055611b4d565b610b9a565b509190346102925761012036600319011261029257610c526118bd565b9160a03660231901126102355767ffffffffffffffff9360e4358581116101f057610c809036908301611973565b90610104359660ff95868916809903610e3e5760c4359283875260209260068452610caf89848a205416612255565b600554835163080cdb0b60e11b815267ffffffffffffffff8c16818a01908152608435602082018190529c92879183916001600160a01b0316908290819060400103915afa908115610e345790610d0d918b91610e17575b5061219f565b1687526008835281872054610d2660a4358092146121eb565b8251610d7081610d628782019460249e8f60643591604435913589939160a0959391855260208501526040840152606083015260808201520190565b03601f198101835282611a21565b5190209387945b89861688811015610e0b578a91908d811c600116610ddc57610d9a90898661216e565b3585519087820192835286820152858152610db4816119ef565b519020955b16898114610dca5760010194610d77565b634e487b7160e01b8952601188528a89fd5b610de790898661216e565b359085519087820192835286820152858152610e02816119ef565b51902095610db9565b896103198385146122a1565b610e2e9150873d8911610809576107fb8183611a21565b38610d07565b85513d8c823e3d90fd5b8580fd5b833461023557806003193601126102355761031933611ed8565b833461023557602036600319011261023557610319610e7961195d565b610e8e6001600160a01b038454163314611b02565b611ed8565b50913461023557610ea336611a43565b918154906001600160a01b0391610ebd3384831614611b02565b60ff9060a01c81161561101c576002925b845b8651811015610aac5781610ee48289611b72565b511680875260039060209180835285878a2054168181101561100957610fc6578a5468010000000000000000811015610fb35782610f2b828e6001610f4b95019055611926565b90919082549060031b916001600160a01b03809116831b921b1916179055565b81895280835286892090881015610fa057917fef1fa0a4d797341645c201a742cf59be633da0589e0e3cda511cfc90cd03968491610f9b949360ff19815416888b161790558751908152a1611b4d565b610ed0565b634e487b7160e01b895260218b52602489fd5b634e487b7160e01b8a5260418c5260248afd5b865162461bcd60e51b8152808c01849052601160248201527f6163636f756e742069732070726f7665720000000000000000000000000000006044820152606490fd5b634e487b7160e01b8a5260218c5260248afd5b600192610ece565b50503461029257611034366119a4565b9161104e6001600160a01b03879695939654163314611b02565b6110598382146122ed565b855b8181106110e557509061107691845194808652850191612362565b9082820360208401528082527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81116110e1577f1605a9f9273f3a8588037190cc9c43a645aa8d2008f74cf66eadf50d079185c693602092849260051b80928583013701030190a180f35b8480fd5b806110f461111d92868961216e565b3567ffffffffffffffff61110c610c0984878961216e565b168952600860205286892055611b4d565b61105b565b50503461029257816003193601126102925760ff6020925460a01c1690519015158152f35b5050346102925781600319360112610292576020906002549051908152f35b50503461029257611176366119a4565b91936001600160a01b0361118e818854163314611b02565b6111998487146122ed565b865b8681106111d657877f10ec8ad6a03997446c98d9aabf3ad339cc9621ec7cd4b47b04fe1ba8f75b42238888610bd589898951948594856123ad565b806111e8610bed61122193888861216e565b67ffffffffffffffff6111ff610c09848c8c61216e565b168a52600a60205283858b2091166001600160a01b0319825416179055611b4d565b61119b565b50346101f057826003193601126101f05760209250549051908152f35b5050346102925781600319360112610292576020906009549051908152f35b50346101f05760203660031901126101f0576020928291358152600b845220549051908152f35b5091903461029257816003193601126102925733825260019060208281526112b660ff8386205416611b86565b83549460ff8660a01c16156113495760ff60a01b198495961686557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa828451338152a185935b611304578580f35b8054841015610aac57611343846001600160a01b036113238897611926565b919054600392831b1c16895284528488208660ff19825416179055611b4d565b936112fc565b915162461bcd60e51b815291820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606490fd5b50346101f057816003193601126101f0576113a36118bd565b90602480359167ffffffffffffffff928381116108b457366023820112156108b4578082013590848211611724578381019084369160a08502010111611724576010948583116116e2578751966103e0808901898110848211176116d0578a523689378992896001600160a01b0360055416938316945b86811061159257505050505050838110611544575b5085835b611454578661031960ff886103c08901518452600660205283205416612255565b919486949193965b6000198801888111611532578110156115155761148261147c8286612248565b84612237565b5161148d8286612248565b90600191828101809111611503576114e4916114ac6114de9288612237565b5186519060208201928352878201528681526114c7816119ef565b51902092846114d68d8a612248565b911c90612248565b85612237565b52600281018091111561145c57634e487b7160e01b8652601185528686fd5b634e487b7160e01b8952601188528989fd5b50949186611527919794929597612248565b9260011c9283611433565b634e487b7160e01b8752601186528787fd5b600019810190808211905b85811061155d57505061142f565b816115805761157b906115708489612237565b51610795828a612237565b61154f565b634e487b7160e01b8952601184528489fd5b60608d6115db868b846115a6878e8b61218f565b013587518094819263080cdb0b60e11b8352602095869584016020909392919367ffffffffffffffff60408201951681520152565b03818c5afa9283156116c5578661162a6116a798838f978f9061160b9061169a99610d6298916116ae575061219f565b81526008865220548a6116228a6080998a9361218f565b0135146121eb565b888d61163789828461218f565b35976116448a838561218f565b01359661166e8a8761165782868861218f565b0135938661166683838961218f565b01359561218f565b0135925196879586019889939160a0959391855260208501526040840152606083015260808201520190565b519020610795828d612237565b8a9061141a565b610e2e9150893d8b11610809576107fb8183611a21565b8651903d90823e3d90fd5b634e487b7160e01b8c5260418752878cfd5b875162461bcd60e51b8152602081860152600c818701527f73697a65206578636565647300000000000000000000000000000000000000006044820152606490fd5b8780fd5b5050346102925781600319360112610292576020906001600160a01b03600554169051908152f35b50346101f05760203660031901126101f0578035916001600160a01b038084168094036110e15784541661179d57505061178933611daa565b6001600160a01b0319600554161760055580f35b906020606492519162461bcd60e51b8352820152601160248201527f6f776e657220616c7265616479207365740000000000000000000000000000006044820152fd5b50346101f05760203660031901126101f057359160025483101561023557506001600160a01b036102266020936118d9565b50346101f05760203660031901126101f057356001600160a01b0390818116809103611884577f674c535cde998bcb47d0688f644df545597c7d6edb95643cb21c82c2d490ff7f9261186a6020938654163314611b02565b816001600160a01b0319600554161760055551908152a180f35b8380fd5b849084346101f05760203660031901126101f05760209267ffffffffffffffff6118b06118bd565b1681526008845220548152f35b6004359067ffffffffffffffff821682036118d457565b600080fd5b6002548110156119105760026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190600090565b634e487b7160e01b600052603260045260246000fd5b6004548110156119105760046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0190600090565b600435906001600160a01b03821682036118d457565b9181601f840112156118d45782359167ffffffffffffffff83116118d4576020808501948460051b0101116118d457565b60406003198201126118d45767ffffffffffffffff916004358381116118d457826119d191600401611973565b939093926024359182116118d4576119eb91600401611973565b9091565b6060810190811067ffffffffffffffff821117611a0b57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117611a0b57604052565b6020806003198301126118d45767ffffffffffffffff916004358381116118d457816023820112156118d4578060040135938411611a0b578360051b9060405194611a9085840187611a21565b85526024848601928201019283116118d457602401905b828210611ab5575050505090565b81356001600160a01b03811681036118d4578152908301908301611aa7565b9181601f840112156118d45782359167ffffffffffffffff83116118d457602083818601950101116118d457565b15611b0957565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b6000198114611b5c5760010190565b634e487b7160e01b600052601160045260246000fd5b80518210156119105760209160051b010190565b15611b8d57565b60405162461bcd60e51b815260206004820152601460248201527f43616c6c6572206973206e6f74207061757365720000000000000000000000006044820152606490fd5b6001600160a01b0380911691600083815260039360209185835260409060ff828220541687811015611d965715611d525760049687549660001990818901988911611d3f57835b8a54811015611cfc578682611c2d83611926565b905490871b1c1614611c4757611c4290611b4d565b611c19565b909192939495969798808210611cd7575b50505087548015611cc45797849392917fd64d11086d859b73cf85a91ca06cbc484398acabe3d9a1b26d4366dff377d98598990190611cae611c9983611926565b6001600160a01b0382549160031b1b19169055565b55848252855220805460ff1916905551908152a1565b634e487b7160e01b845260318952602484fd5b611cf492611ce7610f2b92611926565b905490871b1c1691611926565b388080611c58565b855162461bcd60e51b8152808c01899052601060248201527f70726f766572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b634e487b7160e01b845260118a52602484fd5b815162461bcd60e51b815260048101859052601560248201527f6163636f756e74206973206e6f742070726f76657200000000000000000000006044820152606490fd5b634e487b7160e01b82526021600452602482fd5b600054906001600160a01b0380911691826001600160a01b0319821617600055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b6001600160a01b03811690600090828252600160205260ff604083205416611e935760025468010000000000000000811015611e7f57602092611e637f6719d08c1888103bea251a4ed56406bd0c3e69723c8a1686e017e7bbe159b6f89593610f2b846001604096016002556118d9565b8281526001845220600160ff19825416179055604051908152a1565b634e487b7160e01b83526041600452602483fd5b60405162461bcd60e51b815260206004820152601960248201527f4163636f756e7420697320616c726561647920706175736572000000000000006044820152606490fd5b6001600160a01b038091169060009282845260019060209382855260409360ff858820541615612052576002805490916000199182810190811161203e57908695949392918a975b611f69575b885162461bcd60e51b8152600481018b9052601060248201527f706175736572206e6f7420666f756e64000000000000000000000000000000006044820152606490fd5b8399989799548a1015612035578185611f818c6118d9565b929054600393841b1c1614611faa5750611fa18798999a97959697611b4d565b97969594611f20565b9293949796959991818310612010575b5050505081548015611ffc57918493917fcd265ebaf09df2871cc7bd4133404a235ba12eff2041bb89d9c714a2621c7c7e9899930190611cae611c99836118d9565b634e487b7160e01b89526031600452602489fd5b61202c93612020610f2b936118d9565b9054911b1c16916118d9565b38808080611fba565b87989950611f25565b634e487b7160e01b8a52601160045260248afd5b845162461bcd60e51b815260048101879052601560248201527f4163636f756e74206973206e6f742070617573657200000000000000000000006044820152606490fd5b1561209d57565b60405162461bcd60e51b815260206004820152600e60248201527f696e76616c69642070726f7665720000000000000000000000000000000000006044820152606490fd5b908160209103126118d4575180151581036118d45790565b90918060409360208452816020850152848401376000828201840152601f01601f1916010190565b1561212957565b60405162461bcd60e51b815260206004820152600f60248201527f70726f6f66206e6f742076616c696400000000000000000000000000000000006044820152606490fd5b91908110156119105760051b0190565b9060108110156119105760051b0190565b91908110156119105760a0020190565b156121a657565b60405162461bcd60e51b815260206004820152601060248201527f696e76616c696420736d7420726f6f74000000000000000000000000000000006044820152606490fd5b156121f257565b60405162461bcd60e51b815260206004820152601360248201527f696e76616c69642064756d6d7920696e707574000000000000000000000000006044820152606490fd5b90601f8110156119105760051b0190565b91908201809211611b5c57565b1561225c57565b60405162461bcd60e51b815260206004820152601660248201527f6d65726b6c6520726f6f74206e6f7420657869737473000000000000000000006044820152606490fd5b156122a857565b60405162461bcd60e51b815260206004820152600c60248201527f696e76616c6964206461746100000000000000000000000000000000000000006044820152606490fd5b156122f457565b60405162461bcd60e51b815260206004820152601060248201527f6c656e677468206e6f74206d61746368000000000000000000000000000000006044820152606490fd5b356001600160a01b03811681036118d45790565b3567ffffffffffffffff811681036118d45790565b9190808252602080920192916000805b83821061238157505050505090565b9091929394853567ffffffffffffffff81168091036101f0578152830194830193929160010190612372565b929391906123c391604085526040850191612362565b828103602093840152818152820192916000805b8382106123e657505050505090565b909192939485356001600160a01b0381168091036101f05781528301948301939291600101906123d7565b906101a0116118d4576101800190602090565b906101c0116118d4576101a00190602090565b906101e0116118d4576101c00190602090565b359060208110612458575090565b6000199060200360031b1b1690565b926040519360a0850185811067ffffffffffffffff821117611a0b576040526000855260208501906000825260408601956000875260006060820152600060808201526124b76105ee8787612411565b968782526124c86105ee8888612424565b60608301526124da6105ee8888612437565b809452610200908782116118d4576101e0870135905286610220116118d457850135608082015282956101e086013595604051986101e082013560208b015260408a01528460608a01526060895288608081011067ffffffffffffffff60808b011117611a0b5760808901604052885160208a012098608060a08201918783526101e084013560c08201526040828201526125768282016119ef565b015190209489600052600b6020528560406000205414612754575067ffffffffffffffff84169384600052600a6020526001600160a01b0391826040600020541693841561270f576040516322bb937360e11b8152946020928692839182916125e291600484016120fa565b03915afa9182156126ec57612604602093612641956000916126f85750612122565b6005541660608501519160405180958194829363080cdb0b60e11b8452600484016020909392919367ffffffffffffffff60408201951681520152565b03915afa9081156126ec576000916126cd575b5015612688576126779160005260086020526080604060002054910151146121eb565b84600052600b602052604060002055565b60405162461bcd60e51b815260206004820152601260248201527f736d7420726f6f74206e6f742076616c696400000000000000000000000000006044820152606490fd5b6126e6915060203d602011610809576107fb8183611a21565b38612654565b6040513d6000823e3d90fd5b6108039150853d8711610809576107fb8183611a21565b60405162461bcd60e51b815260206004820152601660248201527f636861696e207665726966696572206e6f7420736574000000000000000000006044820152606490fd5b97506101e0013595505050505056fea26469706673582212206cb75ae10c7c09b408e8d94dafb847b3d78ad3047d28d30e090a190631542c6c64736f6c634300081400330000000000000000000000009d3d4c9876ce85fcadb4aa835c249dcaf4d56999