Commit a09c0068 authored by clabby's avatar clabby Committed by GitHub

feat(ctb): Remove limbo state for LPPs (#9355)

* Remove limbo state for LPPs

* Revert instead of set `challenged = true`
parent aca9ac45
...@@ -43,7 +43,7 @@ type PreimageOracleLeaf struct { ...@@ -43,7 +43,7 @@ type PreimageOracleLeaf struct {
// PreimageOracleMetaData contains all meta data concerning the PreimageOracle contract. // PreimageOracleMetaData contains all meta data concerning the PreimageOracle contract.
var PreimageOracleMetaData = &bind.MetaData{ var PreimageOracleMetaData = &bind.MetaData{
ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_minProposalSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challengePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_cancunActivation\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"KECCAK_TREE_DEPTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_LEAF_COUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addLeavesLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_inputStartBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_stateCommitments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_finalize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeFirstLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengePeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"challengePeriod_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTreeRootLPP\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"treeRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_claimedSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadBlobPreimagePart\",\"inputs\":[{\"name\":\"_z\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_y\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_commitment\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadKeccak256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadLocalData\",\"inputs\":[{\"name\":\"_ident\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_localContext\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_word\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_size\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"key_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadSha256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minProposalSize\",\"inputs\":[],\"outputs\":[{\"name\":\"minProposalSize_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimagePartOk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageParts\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocksLen\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"len_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBranches\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalCount\",\"inputs\":[],\"outputs\":[{\"name\":\"count_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalMetadata\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"LPPMetaData\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalParts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposals\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readPreimage\",\"inputs\":[{\"name\":\"_key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_offset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"dat_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"datLen_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"squeezeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zeroHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"ActiveProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BadProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CancunNotActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInputSize\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPreimage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEOA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PartOffsetOOB\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostStateMatches\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StatesNotContiguous\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TreeSizeOverflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongStartingBlock\",\"inputs\":[]}]", ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_minProposalSize\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_challengePeriod\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_cancunActivation\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"KECCAK_TREE_DEPTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_LEAF_COUNT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"addLeavesLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_inputStartBlock\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_stateCommitments\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_finalize\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeFirstLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengePeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"challengePeriod_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTreeRootLPP\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"treeRoot_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initLPP\",\"inputs\":[{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"_claimedSize\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadBlobPreimagePart\",\"inputs\":[{\"name\":\"_z\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_y\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_commitment\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadKeccak256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadLocalData\",\"inputs\":[{\"name\":\"_ident\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_localContext\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_word\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_size\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"key_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"loadSha256PreimagePart\",\"inputs\":[{\"name\":\"_partOffset\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_preimage\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"minProposalSize\",\"inputs\":[],\"outputs\":[{\"name\":\"minProposalSize_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageLengths\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimagePartOk\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"preimageParts\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocks\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBlocksLen\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"len_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalBranches\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalCount\",\"inputs\":[],\"outputs\":[{\"name\":\"count_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalMetadata\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"LPPMetaData\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposalParts\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"proposals\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"readPreimage\",\"inputs\":[{\"name\":\"_key\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"_offset\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"dat_\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"datLen_\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"squeezeLPP\",\"inputs\":[{\"name\":\"_claimant\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_uuid\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_stateMatrix\",\"type\":\"tuple\",\"internalType\":\"structLibKeccak.StateMatrix\",\"components\":[{\"name\":\"state\",\"type\":\"uint64[25]\",\"internalType\":\"uint64[25]\"}]},{\"name\":\"_preState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_preStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"_postState\",\"type\":\"tuple\",\"internalType\":\"structPreimageOracle.Leaf\",\"components\":[{\"name\":\"input\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"index\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"stateCommitment\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"_postStateProof\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"zeroHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"error\",\"name\":\"ActiveProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AlreadyFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BadProposal\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CancunNotActive\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInputSize\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPreimage\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotEOA\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PartOffsetOOB\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"PostStateMatches\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StatesNotContiguous\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TreeSizeOverflow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongStartingBlock\",\"inputs\":[]}]",
Bin: "0x60e06040523480156200001157600080fd5b50604051620035f6380380620035f68339810160408190526200003491620000f9565b60c083905260a0829052608081905260005b62000054600160106200013e565b811015620000ef576003816010811062000072576200007262000158565b0154600382601081106200008a576200008a62000158565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c591906200016e565b60108110620000d857620000d862000158565b015580620000e68162000189565b91505062000046565b50505050620001a5565b6000806000606084860312156200010f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b60008282101562000153576200015362000128565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000184576200018462000128565b500190565b6000600182016200019e576200019e62000128565b5060010190565b60805160a05160c051613413620001e3600039600081816103f901526119c701526000818161046d015261123101526000610f7b01526134136000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c13660046129ca565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a610205366004612a0c565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612c07565b610641565b005b61020a61088f565b61020a61024b366004612cf3565b6108aa565b61020a61025e366004612d2e565b600160209081526000928352604080842090915290825290205481565b61020a610289366004612a0c565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d92565b61097f565b61020a6102c73660046129ca565b610e0d565b6102fa6102da366004612d2e565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612e2e565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e61565b610e7e565b61020a610357366004612a0c565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612ead565b610f79565b61020a6103ac366004612a0c565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612e2e565b61118a565b6102336103ea366004612c07565b6111bc565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612d2e565b6115ca565b604080519283526020830191909152016101ee565b610233610453366004612e61565b6116bb565b610233610466366004612f39565b6117c3565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612fd2565b61193d565b61020a6104b23660046129ca565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac61300e565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f361300e565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c90806106318161306c565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d6130a4565b611b50565b611b90565b801561068e575061068e838383602088013561066b6106668a6130a4565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da9190613173565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d91906131b1565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc8861078286806131c9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bf192505050565b6107c588611d4c565b8360400135886040516020016107db9190613173565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d60106002613350565b6108a7919061335c565b81565b60006108b686866125e8565b90506108c38360086131b1565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b60608115610998576109918686612695565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d888661270e565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a9190613350565b610c94919061335c565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a6131b1565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d9390846010612940565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015610fd3576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa80610ffb5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa92508261107d576309bde3396000526004601cfd5b602886106110935763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b601460205282600052604060002060205281600052604060002081601081106111b257600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff81161561122f576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061125a8260c01c90565b61126e9067ffffffffffffffff164261335c565b116112a5576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112b18b8b610509565b90506112ca87878360208c013561066b6106668e6130a4565b80156112e857506112e8848483602089013561066b6106668b6130a4565b61131e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016113349190613173565b6040516020818303038152906040528051906020012014611381576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84602001358860200135600161139791906131b1565b1415806113c9575060016113b18360601c63ffffffff1690565b6113bb9190613373565b63ffffffff16856020013514155b15611400576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114128360801c63ffffffff1690565b63ffffffff1690508061142b8460401c63ffffffff1690565b63ffffffff1614611468576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114768a61078288806131c9565b61147f8a611d4c565b600061148a8b612861565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f020000000000000000000000000000000000000000000000000000000000000017905060006114e18560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff16611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461166f8160086131b1565b61167a8560206131b1565b10611698578361168b8260086131b1565b611695919061335c565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116d95763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117cf8686610509565b90506117e8838383602088013561066b6106668a6130a4565b61181e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208401351561185a576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186261297e565b6118708161078287806131c9565b61187981611d4c565b84604001358160405160200161188f9190613173565b60405160208183030381529060405280519060200120036118dc576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611976576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611981816008613398565b63ffffffff168263ffffffff16106119c5576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611a25576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b73939291906133c0565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611be4578060051b880135600186831c1660018114611bc95760008481526020839052604090209350611bda565b600082815260208590526040902093505b5050600101611b96565b5090931495945050505050565b6088815114611bff57600080fd5b6020810160208301611c80565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c7a81611c65868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c8c60008383611c0c565b611c9860018383611c0c565b611ca460028383611c0c565b611cb060038383611c0c565b611cbc60048383611c0c565b611cc860058383611c0c565b611cd460068383611c0c565b611ce060078383611c0c565b611cec60088383611c0c565b611cf860098383611c0c565b611d04600a8383611c0c565b611d10600b8383611c0c565b611d1c600c8383611c0c565b611d28600d8383611c0c565b611d34600e8383611c0c565b611d40600f8383611c0c565b611c7a60108383611c0c565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e001604051602081830303815290604052905060208201602082016124c8565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611eff8660011b67ffffffffffffffff1690565b18188584603f1c611f1a8660011b67ffffffffffffffff1690565b18188584603f1c611f358660011b67ffffffffffffffff1690565b181895508483603f1c611f528560011b67ffffffffffffffff1690565b181894508387603f1c611f6f8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122ef81611e42565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c7a565b6124d4600082846122e6565b6124e0600182846122e6565b6124ec600282846122e6565b6124f8600382846122e6565b612504600482846122e6565b612510600582846122e6565b61251c600682846122e6565b612528600782846122e6565b612534600882846122e6565b612540600982846122e6565b61254c600a82846122e6565b612558600b82846122e6565b612564600c82846122e6565b612570600d82846122e6565b61257c600e82846122e6565b612588600f82846122e6565b612594601082846122e6565b6125a0601182846122e6565b6125ac601282846122e6565b6125b8601382846122e6565b6125c4601482846122e6565b6125d0601582846122e6565b6125dc601682846122e6565b611c7a601782846122e6565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83161761268e818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126de5760888290038501848101848103803687375060806001820353506001845160001a17845386526126f5565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006127208260a01c63ffffffff1690565b67ffffffffffffffff169050600061273e8360801c63ffffffff1690565b63ffffffff16905060006127588460401c63ffffffff1690565b63ffffffff16905060088310801561276e575080155b156127a25760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612857565b600883101580156127c05750806127ba60088561335c565b93508310155b80156127d457506127d187826131b1565b83105b156128575760006127e5828561335c565b9050876127f38260206131b1565b101580156127ff575085155b15612836576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128e4565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff006128928360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128bf8360101b67ffffffffffffffff1690565b1617905060008160201c6128dd8360201b67ffffffffffffffff1690565b1792915050565b608082015160208301906128fc90612868565b612868565b604082015161290a90612868565b60401b176129226128f760018460059190911b015190565b825160809190911b9061293490612868565b60c01b17179392505050565b826010810192821561296e579160200282015b8281111561296e578251825591602001919060010190612953565b5061297a929150612996565b5090565b60405180602001604052806129916129ab565b905290565b5b8082111561297a5760008155600101612997565b6040518061032001604052806019906020820280368337509192915050565b6000602082840312156129dc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a0757600080fd5b919050565b60008060408385031215612a1f57600080fd5b612a28836129e3565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a8957612a89612a36565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a89612a36565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612af957612af9612a36565b604052919050565b6000610320808385031215612b1557600080fd5b604051602080820167ffffffffffffffff8382108183111715612b3a57612b3a612a36565b8160405283955087601f880112612b5057600080fd5b612b58612a65565b9487019491508188861115612b6c57600080fd5b875b86811015612b945780358381168114612b875760008081fd5b8452928401928401612b6e565b50909352509295945050505050565b600060608284031215612bb557600080fd5b50919050565b60008083601f840112612bcd57600080fd5b50813567ffffffffffffffff811115612be557600080fd5b6020830191508360208260051b8501011115612c0057600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612c2657600080fd5b612c2f8a6129e3565b985060208a01359750612c458b60408c01612b01565b96506103608a013567ffffffffffffffff80821115612c6357600080fd5b612c6f8d838e01612ba3565b97506103808c0135915080821115612c8657600080fd5b612c928d838e01612bbb565b90975095506103a08c0135915080821115612cac57600080fd5b612cb88d838e01612ba3565b94506103c08c0135915080821115612ccf57600080fd5b50612cdc8c828d01612bbb565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612d0b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d4157600080fd5b50508035926020909101359150565b60008083601f840112612d6257600080fd5b50813567ffffffffffffffff811115612d7a57600080fd5b602083019150836020828501011115612c0057600080fd5b600080600080600080600060a0888a031215612dad57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612dd357600080fd5b612ddf8b838c01612d50565b909750955060608a0135915080821115612df857600080fd5b50612e058a828b01612bbb565b90945092505060808801358015158114612e1e57600080fd5b8091505092959891949750929550565b600080600060608486031215612e4357600080fd5b612e4c846129e3565b95602085013595506040909401359392505050565b600080600060408486031215612e7657600080fd5b83359250602084013567ffffffffffffffff811115612e9457600080fd5b612ea086828701612d50565b9497909650939450505050565b600080600080600080600060a0888a031215612ec857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612eee57600080fd5b612efa8b838c01612d50565b909750955060608a0135915080821115612f1357600080fd5b50612f208a828b01612d50565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f5157600080fd5b612f5a866129e3565b945060208601359350604086013567ffffffffffffffff80821115612f7e57600080fd5b612f8a89838a01612ba3565b94506060880135915080821115612fa057600080fd5b50612fad88828901612bbb565b969995985093965092949392505050565b803563ffffffff81168114612a0757600080fd5b600080600060608486031215612fe757600080fd5b83359250612ff760208501612fbe565b915061300560408501612fbe565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361309d5761309d61303d565b5060010190565b6000606082360312156130b657600080fd5b6130be612a8f565b823567ffffffffffffffff808211156130d657600080fd5b9084019036601f8301126130e957600080fd5b81356020828211156130fd576130fd612a36565b61312d817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612ab2565b9250818352368183860101111561314357600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b60198110156131a857825167ffffffffffffffff1682526020928301929091019060010161317f565b50505092915050565b600082198211156131c4576131c461303d565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131fe57600080fd5b83018035915067ffffffffffffffff82111561321957600080fd5b602001915036819003821315612c0057600080fd5b600181815b8085111561328757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561326d5761326d61303d565b8085161561327a57918102915b93841c9390800290613233565b509250929050565b60008261329e5750600161334a565b816132ab5750600061334a565b81600181146132c157600281146132cb576132e7565b600191505061334a565b60ff8411156132dc576132dc61303d565b50506001821b61334a565b5060208310610133831016604e8410600b841016171561330a575081810a61334a565b613314838361322e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156133465761334661303d565b0290505b92915050565b600061268e838361328f565b60008282101561336e5761336e61303d565b500390565b600063ffffffff838116908316818110156133905761339061303d565b039392505050565b600063ffffffff8083168185168083038211156133b7576133b761303d565b01949350505050565b6000845160005b818110156133e157602081880181015185830152016133c7565b818111156133f0576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a", Bin: "0x60e06040523480156200001157600080fd5b5060405162003601380380620036018339810160408190526200003491620000f9565b60c083905260a0829052608081905260005b62000054600160106200013e565b811015620000ef576003816010811062000072576200007262000158565b0154600382601081106200008a576200008a62000158565b0154604080516020810193909352820152606001604051602081830303815290604052805190602001206003826001620000c591906200016e565b60108110620000d857620000d862000158565b015580620000e68162000189565b91505062000046565b50505050620001a5565b6000806000606084860312156200010f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b60008282101562000153576200015362000128565b500390565b634e487b7160e01b600052603260045260246000fd5b6000821982111562000184576200018462000128565b500190565b6000600182016200019e576200019e62000128565b5060010190565b60805160a05160c05161341e620001e3600039600081816103f901526119d201526000818161046d015261129301526000610fdd015261341e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c13660046129d5565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a610205366004612a17565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612c12565b610641565b005b61020a61088f565b61020a61024b366004612cfe565b6108aa565b61020a61025e366004612d39565b600160209081526000928352604080842090915290825290205481565b61020a610289366004612a17565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d9d565b61097f565b61020a6102c73660046129d5565b610e6f565b6102fa6102da366004612d39565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612e39565b610e86565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e6c565b610ee0565b61020a610357366004612a17565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612eb8565b610fdb565b61020a6103ac366004612a17565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612e39565b6111ec565b6102336103ea366004612c12565b61121e565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612d39565b6115d5565b604080519283526020830191909152016101ee565b610233610453366004612e6c565b6116c6565b610233610466366004612f44565b6117ce565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612fdd565b611948565b61020a6104b23660046129d5565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac613019565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3613019565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181613077565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d6130af565b611b5b565b611b9b565b801561068e575061068e838383602088013561066b6106668a6130af565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da919061317e565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d91906131bc565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc8861078286806131d4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bfc92505050565b6107c588611d57565b8360400135886040516020016107db919061317e565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d6010600261335b565b6108a79190613367565b81565b60006108b686866125f3565b90506108c38360086131bc565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b606081156109985761099186866126a0565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d8886612719565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a919061335b565b610c949190613367565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a6131bc565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610dcf5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b179150610d7c8260801c63ffffffff1690565b63ffffffff16610d928360401c63ffffffff1690565b63ffffffff1614610dcf576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526014602090815260408083208e84529091529020610df59084601061294b565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e7f57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610eae57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610efe5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610f2b57600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015611035576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa8061105d5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa9250826110df576309bde3396000526004601cfd5b602886106110f55763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b6014602052826000526040600020602052816000526040600020816010811061121457600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff811615611291576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006112bc8260c01c90565b6112d09067ffffffffffffffff1642613367565b11611307576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113138b8b610509565b905061132c87878360208c013561066b6106668e6130af565b801561134a575061134a848483602089013561066b6106668b6130af565b611380576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b876040013589604051602001611396919061317e565b60405160208183030381529060405280519060200120146113e3576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460200135886020013560016113f991906131bc565b14158061142b575060016114138360601c63ffffffff1690565b61141d919061337e565b63ffffffff16856020013514155b15611462576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114708961078287806131d4565b61147989611d57565b60006114848a61286c565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f020000000000000000000000000000000000000000000000000000000000000017905060006114db8460a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002054600160008481526020019081526020016000206000838152602001908152602001600020819055506115ad8460801c63ffffffff1690565b60009283526020839052604090922063ffffffff909216909155505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff1661165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461167a8160086131bc565b6116858560206131bc565b106116a357836116968260086131bc565b6116a09190613367565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116e45763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117da8686610509565b90506117f3838383602088013561066b6106668a6130af565b611829576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084013515611865576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186d612989565b61187b8161078287806131d4565b61188481611d57565b84604001358160405160200161189a919061317e565b60405160208183030381529060405280519060200120036118e7576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611981576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198c8160086133a3565b63ffffffff168263ffffffff16106119d0576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611a30576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b7e939291906133cb565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611bef578060051b880135600186831c1660018114611bd45760008481526020839052604090209350611be5565b600082815260208590526040902093505b5050600101611ba1565b5090931495945050505050565b6088815114611c0a57600080fd5b6020810160208301611c8b565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c8581611c70868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c9760008383611c17565b611ca360018383611c17565b611caf60028383611c17565b611cbb60038383611c17565b611cc760048383611c17565b611cd360058383611c17565b611cdf60068383611c17565b611ceb60078383611c17565b611cf760088383611c17565b611d0360098383611c17565b611d0f600a8383611c17565b611d1b600b8383611c17565b611d27600c8383611c17565b611d33600d8383611c17565b611d3f600e8383611c17565b611d4b600f8383611c17565b611c8560108383611c17565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e001604051602081830303815290604052905060208201602082016124d3565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611f0a8660011b67ffffffffffffffff1690565b18188584603f1c611f258660011b67ffffffffffffffff1690565b18188584603f1c611f408660011b67ffffffffffffffff1690565b181895508483603f1c611f5d8560011b67ffffffffffffffff1690565b181894508387603f1c611f7a8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122fa81611e4d565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c85565b6124df600082846122f1565b6124eb600182846122f1565b6124f7600282846122f1565b612503600382846122f1565b61250f600482846122f1565b61251b600582846122f1565b612527600682846122f1565b612533600782846122f1565b61253f600882846122f1565b61254b600982846122f1565b612557600a82846122f1565b612563600b82846122f1565b61256f600c82846122f1565b61257b600d82846122f1565b612587600e82846122f1565b612593600f82846122f1565b61259f601082846122f1565b6125ab601182846122f1565b6125b7601282846122f1565b6125c3601382846122f1565b6125cf601482846122f1565b6125db601582846122f1565b6125e7601682846122f1565b611c85601782846122f1565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831617612699818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126e95760888290038501848101848103803687375060806001820353506001845160001a1784538652612700565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b600061272b8260a01c63ffffffff1690565b67ffffffffffffffff16905060006127498360801c63ffffffff1690565b63ffffffff16905060006127638460401c63ffffffff1690565b63ffffffff169050600883108015612779575080155b156127ad5760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612862565b600883101580156127cb5750806127c5600885613367565b93508310155b80156127df57506127dc87826131bc565b83105b156128625760006127f08285613367565b9050876127fe8260206131bc565b1015801561280a575085155b15612841576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128ef565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff0061289d8360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128ca8360101b67ffffffffffffffff1690565b1617905060008160201c6128e88360201b67ffffffffffffffff1690565b1792915050565b6080820151602083019061290790612873565b612873565b604082015161291590612873565b60401b1761292d61290260018460059190911b015190565b825160809190911b9061293f90612873565b60c01b17179392505050565b8260108101928215612979579160200282015b8281111561297957825182559160200191906001019061295e565b506129859291506129a1565b5090565b604051806020016040528061299c6129b6565b905290565b5b8082111561298557600081556001016129a2565b6040518061032001604052806019906020820280368337509192915050565b6000602082840312156129e757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a1257600080fd5b919050565b60008060408385031215612a2a57600080fd5b612a33836129ee565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a9457612a94612a41565b60405290565b6040516060810167ffffffffffffffff81118282101715612a9457612a94612a41565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b0457612b04612a41565b604052919050565b6000610320808385031215612b2057600080fd5b604051602080820167ffffffffffffffff8382108183111715612b4557612b45612a41565b8160405283955087601f880112612b5b57600080fd5b612b63612a70565b9487019491508188861115612b7757600080fd5b875b86811015612b9f5780358381168114612b925760008081fd5b8452928401928401612b79565b50909352509295945050505050565b600060608284031215612bc057600080fd5b50919050565b60008083601f840112612bd857600080fd5b50813567ffffffffffffffff811115612bf057600080fd5b6020830191508360208260051b8501011115612c0b57600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612c3157600080fd5b612c3a8a6129ee565b985060208a01359750612c508b60408c01612b0c565b96506103608a013567ffffffffffffffff80821115612c6e57600080fd5b612c7a8d838e01612bae565b97506103808c0135915080821115612c9157600080fd5b612c9d8d838e01612bc6565b90975095506103a08c0135915080821115612cb757600080fd5b612cc38d838e01612bae565b94506103c08c0135915080821115612cda57600080fd5b50612ce78c828d01612bc6565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612d1657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d4c57600080fd5b50508035926020909101359150565b60008083601f840112612d6d57600080fd5b50813567ffffffffffffffff811115612d8557600080fd5b602083019150836020828501011115612c0b57600080fd5b600080600080600080600060a0888a031215612db857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612dde57600080fd5b612dea8b838c01612d5b565b909750955060608a0135915080821115612e0357600080fd5b50612e108a828b01612bc6565b90945092505060808801358015158114612e2957600080fd5b8091505092959891949750929550565b600080600060608486031215612e4e57600080fd5b612e57846129ee565b95602085013595506040909401359392505050565b600080600060408486031215612e8157600080fd5b83359250602084013567ffffffffffffffff811115612e9f57600080fd5b612eab86828701612d5b565b9497909650939450505050565b600080600080600080600060a0888a031215612ed357600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612ef957600080fd5b612f058b838c01612d5b565b909750955060608a0135915080821115612f1e57600080fd5b50612f2b8a828b01612d5b565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f5c57600080fd5b612f65866129ee565b945060208601359350604086013567ffffffffffffffff80821115612f8957600080fd5b612f9589838a01612bae565b94506060880135915080821115612fab57600080fd5b50612fb888828901612bc6565b969995985093965092949392505050565b803563ffffffff81168114612a1257600080fd5b600080600060608486031215612ff257600080fd5b8335925061300260208501612fc9565b915061301060408501612fc9565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130a8576130a8613048565b5060010190565b6000606082360312156130c157600080fd5b6130c9612a9a565b823567ffffffffffffffff808211156130e157600080fd5b9084019036601f8301126130f457600080fd5b813560208282111561310857613108612a41565b613138817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612abd565b9250818352368183860101111561314e57600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b60198110156131b357825167ffffffffffffffff1682526020928301929091019060010161318a565b50505092915050565b600082198211156131cf576131cf613048565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320957600080fd5b83018035915067ffffffffffffffff82111561322457600080fd5b602001915036819003821315612c0b57600080fd5b600181815b8085111561329257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561327857613278613048565b8085161561328557918102915b93841c939080029061323e565b509250929050565b6000826132a957506001613355565b816132b657506000613355565b81600181146132cc57600281146132d6576132f2565b6001915050613355565b60ff8411156132e7576132e7613048565b50506001821b613355565b5060208310610133831016604e8410600b8410161715613315575081810a613355565b61331f8383613239565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561335157613351613048565b0290505b92915050565b6000612699838361329a565b60008282101561337957613379613048565b500390565b600063ffffffff8381169083168181101561339b5761339b613048565b039392505050565b600063ffffffff8083168185168083038211156133c2576133c2613048565b01949350505050565b6000845160005b818110156133ec57602081880181015185830152016133d2565b818111156133fb576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a",
} }
// PreimageOracleABI is the input ABI used to generate the binding from. // PreimageOracleABI is the input ABI used to generate the binding from.
......
...@@ -13,7 +13,7 @@ const PreimageOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contrac ...@@ -13,7 +13,7 @@ const PreimageOracleStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contrac
var PreimageOracleStorageLayout = new(solc.StorageLayout) var PreimageOracleStorageLayout = new(solc.StorageLayout)
var PreimageOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c13660046129ca565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a610205366004612a0c565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612c07565b610641565b005b61020a61088f565b61020a61024b366004612cf3565b6108aa565b61020a61025e366004612d2e565b600160209081526000928352604080842090915290825290205481565b61020a610289366004612a0c565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d92565b61097f565b61020a6102c73660046129ca565b610e0d565b6102fa6102da366004612d2e565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612e2e565b610e24565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e61565b610e7e565b61020a610357366004612a0c565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612ead565b610f79565b61020a6103ac366004612a0c565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612e2e565b61118a565b6102336103ea366004612c07565b6111bc565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612d2e565b6115ca565b604080519283526020830191909152016101ee565b610233610453366004612e61565b6116bb565b610233610466366004612f39565b6117c3565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612fd2565b61193d565b61020a6104b23660046129ca565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac61300e565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f361300e565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c90806106318161306c565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d6130a4565b611b50565b611b90565b801561068e575061068e838383602088013561066b6106668a6130a4565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da9190613173565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d91906131b1565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc8861078286806131c9565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bf192505050565b6107c588611d4c565b8360400135886040516020016107db9190613173565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d60106002613350565b6108a7919061335c565b81565b60006108b686866125e8565b90506108c38360086131b1565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b60608115610998576109918686612695565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d888661270e565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a9190613350565b610c94919061335c565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a6131b1565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610d6d5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b1791505b3360009081526014602090815260408083208e84529091529020610d9390846010612940565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e1d57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610e4c57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610e9c5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610ec957600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015610fd3576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa80610ffb5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa92508261107d576309bde3396000526004601cfd5b602886106110935763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b601460205282600052604060002060205281600052604060002081601081106111b257600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff81161561122f576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000061125a8260c01c90565b61126e9067ffffffffffffffff164261335c565b116112a5576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006112b18b8b610509565b90506112ca87878360208c013561066b6106668e6130a4565b80156112e857506112e8848483602089013561066b6106668b6130a4565b61131e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8760400135896040516020016113349190613173565b6040516020818303038152906040528051906020012014611381576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84602001358860200135600161139791906131b1565b1415806113c9575060016113b18360601c63ffffffff1690565b6113bb9190613373565b63ffffffff16856020013514155b15611400576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114128360801c63ffffffff1690565b63ffffffff1690508061142b8460401c63ffffffff1690565b63ffffffff1614611468576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114768a61078288806131c9565b61147f8a611d4c565b600061148a8b612861565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f020000000000000000000000000000000000000000000000000000000000000017905060006114e18560a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008e8152602001908152602001600020546001600084815260200190815260200160002060008381526020019081526020016000208190555082600080848152602001908152602001600020819055505050505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff16611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461166f8160086131b1565b61167a8560206131b1565b10611698578361168b8260086131b1565b611695919061335c565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116d95763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117cf8686610509565b90506117e8838383602088013561066b6106668a6130a4565b61181e576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208401351561185a576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186261297e565b6118708161078287806131c9565b61187981611d4c565b84604001358160405160200161188f9190613173565b60405160208183030381529060405280519060200120036118dc576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611976576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611981816008613398565b63ffffffff168263ffffffff16106119c5576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611a25576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b73939291906133c0565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611be4578060051b880135600186831c1660018114611bc95760008481526020839052604090209350611bda565b600082815260208590526040902093505b5050600101611b96565b5090931495945050505050565b6088815114611bff57600080fd5b6020810160208301611c80565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c7a81611c65868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c8c60008383611c0c565b611c9860018383611c0c565b611ca460028383611c0c565b611cb060038383611c0c565b611cbc60048383611c0c565b611cc860058383611c0c565b611cd460068383611c0c565b611ce060078383611c0c565b611cec60088383611c0c565b611cf860098383611c0c565b611d04600a8383611c0c565b611d10600b8383611c0c565b611d1c600c8383611c0c565b611d28600d8383611c0c565b611d34600e8383611c0c565b611d40600f8383611c0c565b611c7a60108383611c0c565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e001604051602081830303815290604052905060208201602082016124c8565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611eff8660011b67ffffffffffffffff1690565b18188584603f1c611f1a8660011b67ffffffffffffffff1690565b18188584603f1c611f358660011b67ffffffffffffffff1690565b181895508483603f1c611f528560011b67ffffffffffffffff1690565b181894508387603f1c611f6f8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122ef81611e42565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c7a565b6124d4600082846122e6565b6124e0600182846122e6565b6124ec600282846122e6565b6124f8600382846122e6565b612504600482846122e6565b612510600582846122e6565b61251c600682846122e6565b612528600782846122e6565b612534600882846122e6565b612540600982846122e6565b61254c600a82846122e6565b612558600b82846122e6565b612564600c82846122e6565b612570600d82846122e6565b61257c600e82846122e6565b612588600f82846122e6565b612594601082846122e6565b6125a0601182846122e6565b6125ac601282846122e6565b6125b8601382846122e6565b6125c4601482846122e6565b6125d0601582846122e6565b6125dc601682846122e6565b611c7a601782846122e6565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83161761268e818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126de5760888290038501848101848103803687375060806001820353506001845160001a17845386526126f5565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b60006127208260a01c63ffffffff1690565b67ffffffffffffffff169050600061273e8360801c63ffffffff1690565b63ffffffff16905060006127588460401c63ffffffff1690565b63ffffffff16905060088310801561276e575080155b156127a25760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612857565b600883101580156127c05750806127ba60088561335c565b93508310155b80156127d457506127d187826131b1565b83105b156128575760006127e5828561335c565b9050876127f38260206131b1565b101580156127ff575085155b15612836576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128e4565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff006128928360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128bf8360101b67ffffffffffffffff1690565b1617905060008160201c6128dd8360201b67ffffffffffffffff1690565b1792915050565b608082015160208301906128fc90612868565b612868565b604082015161290a90612868565b60401b176129226128f760018460059190911b015190565b825160809190911b9061293490612868565b60c01b17179392505050565b826010810192821561296e579160200282015b8281111561296e578251825591602001919060010190612953565b5061297a929150612996565b5090565b60405180602001604052806129916129ab565b905290565b5b8082111561297a5760008155600101612997565b6040518061032001604052806019906020820280368337509192915050565b6000602082840312156129dc57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a0757600080fd5b919050565b60008060408385031215612a1f57600080fd5b612a28836129e3565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a8957612a89612a36565b60405290565b6040516060810167ffffffffffffffff81118282101715612a8957612a89612a36565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612af957612af9612a36565b604052919050565b6000610320808385031215612b1557600080fd5b604051602080820167ffffffffffffffff8382108183111715612b3a57612b3a612a36565b8160405283955087601f880112612b5057600080fd5b612b58612a65565b9487019491508188861115612b6c57600080fd5b875b86811015612b945780358381168114612b875760008081fd5b8452928401928401612b6e565b50909352509295945050505050565b600060608284031215612bb557600080fd5b50919050565b60008083601f840112612bcd57600080fd5b50813567ffffffffffffffff811115612be557600080fd5b6020830191508360208260051b8501011115612c0057600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612c2657600080fd5b612c2f8a6129e3565b985060208a01359750612c458b60408c01612b01565b96506103608a013567ffffffffffffffff80821115612c6357600080fd5b612c6f8d838e01612ba3565b97506103808c0135915080821115612c8657600080fd5b612c928d838e01612bbb565b90975095506103a08c0135915080821115612cac57600080fd5b612cb88d838e01612ba3565b94506103c08c0135915080821115612ccf57600080fd5b50612cdc8c828d01612bbb565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612d0b57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d4157600080fd5b50508035926020909101359150565b60008083601f840112612d6257600080fd5b50813567ffffffffffffffff811115612d7a57600080fd5b602083019150836020828501011115612c0057600080fd5b600080600080600080600060a0888a031215612dad57600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612dd357600080fd5b612ddf8b838c01612d50565b909750955060608a0135915080821115612df857600080fd5b50612e058a828b01612bbb565b90945092505060808801358015158114612e1e57600080fd5b8091505092959891949750929550565b600080600060608486031215612e4357600080fd5b612e4c846129e3565b95602085013595506040909401359392505050565b600080600060408486031215612e7657600080fd5b83359250602084013567ffffffffffffffff811115612e9457600080fd5b612ea086828701612d50565b9497909650939450505050565b600080600080600080600060a0888a031215612ec857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612eee57600080fd5b612efa8b838c01612d50565b909750955060608a0135915080821115612f1357600080fd5b50612f208a828b01612d50565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f5157600080fd5b612f5a866129e3565b945060208601359350604086013567ffffffffffffffff80821115612f7e57600080fd5b612f8a89838a01612ba3565b94506060880135915080821115612fa057600080fd5b50612fad88828901612bbb565b969995985093965092949392505050565b803563ffffffff81168114612a0757600080fd5b600080600060608486031215612fe757600080fd5b83359250612ff760208501612fbe565b915061300560408501612fbe565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361309d5761309d61303d565b5060010190565b6000606082360312156130b657600080fd5b6130be612a8f565b823567ffffffffffffffff808211156130d657600080fd5b9084019036601f8301126130e957600080fd5b81356020828211156130fd576130fd612a36565b61312d817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612ab2565b9250818352368183860101111561314357600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b60198110156131a857825167ffffffffffffffff1682526020928301929091019060010161317f565b50505092915050565b600082198211156131c4576131c461303d565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131fe57600080fd5b83018035915067ffffffffffffffff82111561321957600080fd5b602001915036819003821315612c0057600080fd5b600181815b8085111561328757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561326d5761326d61303d565b8085161561327a57918102915b93841c9390800290613233565b509250929050565b60008261329e5750600161334a565b816132ab5750600061334a565b81600181146132c157600281146132cb576132e7565b600191505061334a565b60ff8411156132dc576132dc61303d565b50506001821b61334a565b5060208310610133831016604e8410600b841016171561330a575081810a61334a565b613314838361322e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156133465761334661303d565b0290505b92915050565b600061268e838361328f565b60008282101561336e5761336e61303d565b500390565b600063ffffffff838116908316818110156133905761339061303d565b039392505050565b600063ffffffff8083168185168083038211156133b7576133b761303d565b01949350505050565b6000845160005b818110156133e157602081880181015185830152016133c7565b818111156133f0576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a" var PreimageOracleDeployedBin = "0x608060405234801561001057600080fd5b50600436106101ae5760003560e01c80639d53a648116100ee578063dd24f9bf11610097578063ec5efcbc11610071578063ec5efcbc14610458578063f3f480d91461046b578063faf37bc714610491578063fef2b4ed146104a457600080fd5b8063dd24f9bf146103f7578063e03110e11461041d578063e15926111461044557600080fd5b8063b4801e61116100c8578063b4801e61146103c9578063d18534b5146103dc578063da35c664146103ef57600080fd5b80639d53a648146103495780639d7e87691461038b578063b2e67ba81461039e57600080fd5b806361238bde1161015b5780637ac54767116101355780637ac54767146102b95780638542cf50146102cc578063882856ef1461030a5780638dc4be111461033657600080fd5b806361238bde146102505780636551927b1461027b5780637917de1d146102a657600080fd5b80633909af5c1161018c5780633909af5c146102205780634d52b4c91461023557806352f0f3ad1461023d57600080fd5b8063013cf08b146101b35780630359a563146101f75780632055b36b14610218575b600080fd5b6101c66101c13660046129d5565b6104c4565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152015b60405180910390f35b61020a610205366004612a17565b610509565b6040519081526020016101ee565b61020a601081565b61023361022e366004612c12565b610641565b005b61020a61088f565b61020a61024b366004612cfe565b6108aa565b61020a61025e366004612d39565b600160209081526000928352604080842090915290825290205481565b61020a610289366004612a17565b601560209081526000928352604080842090915290825290205481565b6102336102b4366004612d9d565b61097f565b61020a6102c73660046129d5565b610e6f565b6102fa6102da366004612d39565b600260209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016101ee565b61031d610318366004612e39565b610e86565b60405167ffffffffffffffff90911681526020016101ee565b610233610344366004612e6c565b610ee0565b61020a610357366004612a17565b73ffffffffffffffffffffffffffffffffffffffff9091166000908152601760209081526040808320938352929052205490565b610233610399366004612eb8565b610fdb565b61020a6103ac366004612a17565b601660209081526000928352604080842090915290825290205481565b61020a6103d7366004612e39565b6111ec565b6102336103ea366004612c12565b61121e565b60135461020a565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61043061042b366004612d39565b6115d5565b604080519283526020830191909152016101ee565b610233610453366004612e6c565b6116c6565b610233610466366004612f44565b6117ce565b7f000000000000000000000000000000000000000000000000000000000000000061020a565b61023361049f366004612fdd565b611948565b61020a6104b23660046129d5565b60006020819052908152604090205481565b601381815481106104d457600080fd5b60009182526020909120600290910201805460019091015473ffffffffffffffffffffffffffffffffffffffff909116915082565b73ffffffffffffffffffffffffffffffffffffffff82166000908152601560209081526040808320848452909152812054819061054c9060601c63ffffffff1690565b63ffffffff16905060005b601081101561063957816001166001036105df5773ffffffffffffffffffffffffffffffffffffffff85166000908152601460209081526040808320878452909152902081601081106105ac576105ac613019565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250610620565b82600382601081106105f3576105f3613019565b01546040805160208101939093528201526060016040516020818303038152906040528051906020012092505b60019190911c908061063181613077565b915050610557565b505092915050565b600061064d8a8a610509565b905061067086868360208b013561066b6106668d6130af565b611b5b565b611b9b565b801561068e575061068e838383602088013561066b6106668a6130af565b6106c4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660400135886040516020016106da919061317e565b6040516020818303038152906040528051906020012014610727576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83602001358760200135600161073d91906131bc565b14610774576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107bc8861078286806131d4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611bfc92505050565b6107c588611d57565b8360400135886040516020016107db919061317e565b6040516020818303038152906040528051906020012003610828576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9590951660009081526015602090815260408083209683529590529390932080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550505050565b600161089d6010600261335b565b6108a79190613367565b81565b60006108b686866125f3565b90506108c38360086131bc565b8211806108d05750602083115b15610907576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000602081815260c085901b82526008959095528251828252600286526040808320858452875280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558484528752808320948352938652838220558181529384905292205592915050565b606081156109985761099186866126a0565b90506109d2565b85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050505b3360009081526014602090815260408083208b845290915280822081516102008101928390529160109082845b8154815260200190600101908083116109ff57505050505090506000601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b81526020019081526020016000205490506000610a808260601c63ffffffff1690565b63ffffffff169050333214610ac1576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ad18260801c63ffffffff1690565b63ffffffff16600003610b10576040517f87138d5c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b1a8260c01c90565b67ffffffffffffffff1615610b5b576040517f475a253500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b898114610b94576040517f60f95d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba189898d8886612719565b83516020850160888204881415608883061715610bc6576307b1daf16000526004601cfd5b60405160c8810160405260005b83811015610c76578083018051835260208101516020840152604081015160408401526060810151606084015260808101516080840152508460888301526088810460051b8b013560a883015260c882206001860195508560005b610200811015610c6b576001821615610c4b5782818b0152610c6b565b8981015160009081526020938452604090209260019290921c9101610c2e565b505050608801610bd3565b50505050600160106002610c8a919061335b565b610c949190613367565b811115610ccd576040517f6229572300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d42610ce08360401c63ffffffff1690565b610cf09063ffffffff168a6131bc565b60401b7fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff606084901b167fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff8516171790565b91508415610dcf5777ffffffffffffffffffffffffffffffffffffffffffffffff82164260c01b179150610d7c8260801c63ffffffff1690565b63ffffffff16610d928360401c63ffffffff1690565b63ffffffff1614610dcf576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526014602090815260408083208e84529091529020610df59084601061294b565b50503360008181526017602090815260408083208e8452825280832080546001810182559084528284206004820401805460039092166008026101000a67ffffffffffffffff818102199093164390931602919091179055928252601581528282209c82529b909b52909920989098555050505050505050565b60038160108110610e7f57600080fd5b0154905081565b60176020528260005260406000206020528160005260406000208181548110610eae57600080fd5b906000526020600020906004918282040191900660080292509250509054906101000a900467ffffffffffffffff1681565b604435600080600883018610610efe5763fe2549876000526004601cfd5b60c083901b60805260888386823786600882030151915060206000858360025afa905080610f2b57600080fd5b50600080517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0400000000000000000000000000000000000000000000000000000000000000178082526002602090815260408084208a8552825280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091558385528252808420998452988152888320939093558152908190529490942055505050565b7f0000000000000000000000000000000000000000000000000000000000000000421015611035576040517f299f254900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080603087600037602060006030600060025afa8061105d5763f91129696000526004601cfd5b6000517effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f010000000000000000000000000000000000000000000000000000000000000017608081815260a08c905260c08b905260308a60e037603088609083013760008060c083600a5afa9250826110df576309bde3396000526004601cfd5b602886106110f55763fe2549876000526004601cfd5b6000602882015278200000000000000000000000000000000000000000000000008152600881018b905285810151935060308a8237603081019b909b52505060509098207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0500000000000000000000000000000000000000000000000000000000000000176000818152600260209081526040808320868452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209583529481528482209a909a559081528089529190912096909655505050505050565b6014602052826000526040600020602052816000526040600020816010811061121457600080fd5b0154925083915050565b73ffffffffffffffffffffffffffffffffffffffff891660009081526015602090815260408083208b845290915290205467ffffffffffffffff811615611291576040517fc334f06900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006112bc8260c01c90565b6112d09067ffffffffffffffff1642613367565b11611307576040517f55d4cbf900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006113138b8b610509565b905061132c87878360208c013561066b6106668e6130af565b801561134a575061134a848483602089013561066b6106668b6130af565b611380576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b876040013589604051602001611396919061317e565b60405160208183030381529060405280519060200120146113e3576040517f1968a90200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8460200135886020013560016113f991906131bc565b14158061142b575060016114138360601c63ffffffff1690565b61141d919061337e565b63ffffffff16856020013514155b15611462576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114708961078287806131d4565b61147989611d57565b60006114848a61286c565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f020000000000000000000000000000000000000000000000000000000000000017905060006114db8460a01c63ffffffff1690565b67ffffffffffffffff169050600160026000848152602001908152602001600020600083815260200190815260200160002060006101000a81548160ff021916908315150217905550601660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d815260200190815260200160002054600160008481526020019081526020016000206000838152602001908152602001600020819055506115ad8460801c63ffffffff1690565b60009283526020839052604090922063ffffffff909216909155505050505050505050505050565b6000828152600260209081526040808320848452909152812054819060ff1661165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f7072652d696d616765206d757374206578697374000000000000000000000000604482015260640160405180910390fd5b506000838152602081815260409091205461167a8160086131bc565b6116858560206131bc565b106116a357836116968260086131bc565b6116a09190613367565b91505b506000938452600160209081526040808620948652939052919092205492909150565b6044356000806008830186106116e45763fe2549876000526004601cfd5b60c083901b6080526088838682378087017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80151908490207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f02000000000000000000000000000000000000000000000000000000000000001760008181526002602090815260408083208b8452825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915584845282528083209a83529981528982209390935590815290819052959095209190915550505050565b60006117da8686610509565b90506117f3838383602088013561066b6106668a6130af565b611829576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602084013515611865576040517f9a3b119900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61186d612989565b61187b8161078287806131d4565b61188481611d57565b84604001358160405160200161189a919061317e565b60405160208183030381529060405280519060200120036118e7576040517f9843145b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505073ffffffffffffffffffffffffffffffffffffffff9290921660009081526015602090815260408083209383529290522080547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016600117905550565b333214611981576040517fba092d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61198c8160086133a3565b63ffffffff168263ffffffff16106119d0576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008163ffffffff161015611a30576040517f7b1dafd100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000818152601560209081526040808320878452825280832080547fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1660a09790971b7fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff169690961760809590951b9490941790945582518084019093529082529181019283526013805460018101825592525160029091027f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0908101805473ffffffffffffffffffffffffffffffffffffffff9093167fffffffffffffffffffffffff00000000000000000000000000000000000000009093169290921790915590517f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a09190910155565b6000816000015182602001518360400151604051602001611b7e939291906133cb565b604051602081830303815290604052805190602001209050919050565b60008160005b6010811015611bef578060051b880135600186831c1660018114611bd45760008481526020839052604090209350611be5565b600082815260208590526040902093505b5050600101611ba1565b5090931495945050505050565b6088815114611c0a57600080fd5b6020810160208301611c8b565b8260031b8201518060001a8160011a60081b178160021a60101b8260031a60181b17178160041a60201b8260051a60281b178260061a60301b8360071a60381b1717179050611c8581611c70868560059190911b015190565b1867ffffffffffffffff16600586901b840152565b50505050565b611c9760008383611c17565b611ca360018383611c17565b611caf60028383611c17565b611cbb60038383611c17565b611cc760048383611c17565b611cd360058383611c17565b611cdf60068383611c17565b611ceb60078383611c17565b611cf760088383611c17565b611d0360098383611c17565b611d0f600a8383611c17565b611d1b600b8383611c17565b611d27600c8383611c17565b611d33600d8383611c17565b611d3f600e8383611c17565b611d4b600f8383611c17565b611c8560108383611c17565b6040805178010000000000008082800000000000808a8000000080008000602082015279808b00000000800000018000000080008081800000000000800991810191909152788a00000000000000880000000080008009000000008000000a60608201527b8000808b800000000000008b8000000000008089800000000000800360808201527f80000000000080028000000000000080000000000000800a800000008000000a60a08201527f800000008000808180000000000080800000000080000001800000008000800860c082015260009060e001604051602081830303815290604052905060208201602082016124d3565b6102808101516101e082015161014083015160a0840151845118189118186102a082015161020083015161016084015160c0850151602086015118189118186102c083015161022084015161018085015160e0860151604087015118189118186102e08401516102408501516101a0860151610100870151606088015118189118186103008501516102608601516101c0870151610120880151608089015118189118188084603f1c611f0a8660011b67ffffffffffffffff1690565b18188584603f1c611f258660011b67ffffffffffffffff1690565b18188584603f1c611f408660011b67ffffffffffffffff1690565b181895508483603f1c611f5d8560011b67ffffffffffffffff1690565b181894508387603f1c611f7a8960011b67ffffffffffffffff1690565b60208b01518b51861867ffffffffffffffff168c5291189190911897508118600181901b603f9190911c18935060c08801518118601481901c602c9190911b1867ffffffffffffffff1660208901526101208801518718602c81901c60149190911b1867ffffffffffffffff1660c08901526102c08801518618600381901c603d9190911b1867ffffffffffffffff166101208901526101c08801518718601981901c60279190911b1867ffffffffffffffff166102c08901526102808801518218602e81901c60129190911b1867ffffffffffffffff166101c089015260408801518618600281901c603e9190911b1867ffffffffffffffff166102808901526101808801518618601581901c602b9190911b1867ffffffffffffffff1660408901526101a08801518518602781901c60199190911b1867ffffffffffffffff166101808901526102608801518718603881901c60089190911b1867ffffffffffffffff166101a08901526102e08801518518600881901c60389190911b1867ffffffffffffffff166102608901526101e08801518218601781901c60299190911b1867ffffffffffffffff166102e089015260808801518718602581901c601b9190911b1867ffffffffffffffff166101e08901526103008801518718603281901c600e9190911b1867ffffffffffffffff1660808901526102a08801518118603e81901c60029190911b1867ffffffffffffffff166103008901526101008801518518600981901c60379190911b1867ffffffffffffffff166102a08901526102008801518118601381901c602d9190911b1867ffffffffffffffff1661010089015260a08801518218601c81901c60249190911b1867ffffffffffffffff1661020089015260608801518518602481901c601c9190911b1867ffffffffffffffff1660a08901526102408801518518602b81901c60159190911b1867ffffffffffffffff1660608901526102208801518618603181901c600f9190911b1867ffffffffffffffff166102408901526101608801518118603681901c600a9190911b1867ffffffffffffffff166102208901525060e08701518518603a81901c60069190911b1867ffffffffffffffff166101608801526101408701518118603d81901c60039190911b1867ffffffffffffffff1660e0880152505067ffffffffffffffff81166101408601525050505050565b6122fa81611e4d565b805160208201805160408401805160608601805160808801805167ffffffffffffffff871986168a188116808c528619851689188216909952831982169095188516909552841988169091188316909152941990921618811690925260a08301805160c0808601805160e0880180516101008a0180516101208c018051861985168a188d16909a528319821686188c16909652801989169092188a169092528619861618881690529219909216909218841690526101408401805161016086018051610180880180516101a08a0180516101c08c0180518619851689188d169099528319821686188c16909652801988169092188a169092528519851618881690529119909116909118841690526101e08401805161020086018051610220880180516102408a0180516102608c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052610280840180516102a0860180516102c0880180516102e08a0180516103008c0180518619851689188d169099528319821686188c16909652801988169092188a16909252851985161888169052911990911690911884169052600386901b850151901c9081189091168252611c85565b6124df600082846122f1565b6124eb600182846122f1565b6124f7600282846122f1565b612503600382846122f1565b61250f600482846122f1565b61251b600582846122f1565b612527600682846122f1565b612533600782846122f1565b61253f600882846122f1565b61254b600982846122f1565b612557600a82846122f1565b612563600b82846122f1565b61256f600c82846122f1565b61257b600d82846122f1565b612587600e82846122f1565b612593600f82846122f1565b61259f601082846122f1565b6125ab601182846122f1565b6125b7601282846122f1565b6125c3601382846122f1565b6125cf601482846122f1565b6125db601582846122f1565b6125e7601682846122f1565b611c85601782846122f1565b7f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831617612699818360408051600093845233602052918152606090922091527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b9392505050565b60606040519050816020820181810182868337608883068080156126e95760888290038501848101848103803687375060806001820353506001845160001a1784538652612700565b608836843760018353608060878401536088850186525b5050505050601f19603f82510116810160405292915050565b600061272b8260a01c63ffffffff1690565b67ffffffffffffffff16905060006127498360801c63ffffffff1690565b63ffffffff16905060006127638460401c63ffffffff1690565b63ffffffff169050600883108015612779575080155b156127ad5760c082901b6000908152883560085283513382526016602090815260408084208a855290915290912055612862565b600883101580156127cb5750806127c5600885613367565b93508310155b80156127df57506127dc87826131bc565b83105b156128625760006127f08285613367565b9050876127fe8260206131bc565b1015801561280a575085155b15612841576040517ffe25498700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526016602090815260408083208a845290915290209089013590555b5050505050505050565b60006128ef565b66ff00ff00ff00ff8160081c1667ff00ff00ff00ff0061289d8360081b67ffffffffffffffff1690565b1617905065ffff0000ffff8160101c1667ffff0000ffff00006128ca8360101b67ffffffffffffffff1690565b1617905060008160201c6128e88360201b67ffffffffffffffff1690565b1792915050565b6080820151602083019061290790612873565b612873565b604082015161291590612873565b60401b1761292d61290260018460059190911b015190565b825160809190911b9061293f90612873565b60c01b17179392505050565b8260108101928215612979579160200282015b8281111561297957825182559160200191906001019061295e565b506129859291506129a1565b5090565b604051806020016040528061299c6129b6565b905290565b5b8082111561298557600081556001016129a2565b6040518061032001604052806019906020820280368337509192915050565b6000602082840312156129e757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114612a1257600080fd5b919050565b60008060408385031215612a2a57600080fd5b612a33836129ee565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610320810167ffffffffffffffff81118282101715612a9457612a94612a41565b60405290565b6040516060810167ffffffffffffffff81118282101715612a9457612a94612a41565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b0457612b04612a41565b604052919050565b6000610320808385031215612b2057600080fd5b604051602080820167ffffffffffffffff8382108183111715612b4557612b45612a41565b8160405283955087601f880112612b5b57600080fd5b612b63612a70565b9487019491508188861115612b7757600080fd5b875b86811015612b9f5780358381168114612b925760008081fd5b8452928401928401612b79565b50909352509295945050505050565b600060608284031215612bc057600080fd5b50919050565b60008083601f840112612bd857600080fd5b50813567ffffffffffffffff811115612bf057600080fd5b6020830191508360208260051b8501011115612c0b57600080fd5b9250929050565b60008060008060008060008060006103e08a8c031215612c3157600080fd5b612c3a8a6129ee565b985060208a01359750612c508b60408c01612b0c565b96506103608a013567ffffffffffffffff80821115612c6e57600080fd5b612c7a8d838e01612bae565b97506103808c0135915080821115612c9157600080fd5b612c9d8d838e01612bc6565b90975095506103a08c0135915080821115612cb757600080fd5b612cc38d838e01612bae565b94506103c08c0135915080821115612cda57600080fd5b50612ce78c828d01612bc6565b915080935050809150509295985092959850929598565b600080600080600060a08688031215612d1657600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612d4c57600080fd5b50508035926020909101359150565b60008083601f840112612d6d57600080fd5b50813567ffffffffffffffff811115612d8557600080fd5b602083019150836020828501011115612c0b57600080fd5b600080600080600080600060a0888a031215612db857600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612dde57600080fd5b612dea8b838c01612d5b565b909750955060608a0135915080821115612e0357600080fd5b50612e108a828b01612bc6565b90945092505060808801358015158114612e2957600080fd5b8091505092959891949750929550565b600080600060608486031215612e4e57600080fd5b612e57846129ee565b95602085013595506040909401359392505050565b600080600060408486031215612e8157600080fd5b83359250602084013567ffffffffffffffff811115612e9f57600080fd5b612eab86828701612d5b565b9497909650939450505050565b600080600080600080600060a0888a031215612ed357600080fd5b8735965060208801359550604088013567ffffffffffffffff80821115612ef957600080fd5b612f058b838c01612d5b565b909750955060608a0135915080821115612f1e57600080fd5b50612f2b8a828b01612d5b565b989b979a50959894979596608090950135949350505050565b600080600080600060808688031215612f5c57600080fd5b612f65866129ee565b945060208601359350604086013567ffffffffffffffff80821115612f8957600080fd5b612f9589838a01612bae565b94506060880135915080821115612fab57600080fd5b50612fb888828901612bc6565b969995985093965092949392505050565b803563ffffffff81168114612a1257600080fd5b600080600060608486031215612ff257600080fd5b8335925061300260208501612fc9565b915061301060408501612fc9565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130a8576130a8613048565b5060010190565b6000606082360312156130c157600080fd5b6130c9612a9a565b823567ffffffffffffffff808211156130e157600080fd5b9084019036601f8301126130f457600080fd5b813560208282111561310857613108612a41565b613138817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601612abd565b9250818352368183860101111561314e57600080fd5b81818501828501376000918301810191909152908352848101359083015250604092830135928101929092525090565b81516103208201908260005b60198110156131b357825167ffffffffffffffff1682526020928301929091019060010161318a565b50505092915050565b600082198211156131cf576131cf613048565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320957600080fd5b83018035915067ffffffffffffffff82111561322457600080fd5b602001915036819003821315612c0b57600080fd5b600181815b8085111561329257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561327857613278613048565b8085161561328557918102915b93841c939080029061323e565b509250929050565b6000826132a957506001613355565b816132b657506000613355565b81600181146132cc57600281146132d6576132f2565b6001915050613355565b60ff8411156132e7576132e7613048565b50506001821b613355565b5060208310610133831016604e8410600b8410161715613315575081810a613355565b61331f8383613239565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561335157613351613048565b0290505b92915050565b6000612699838361329a565b60008282101561337957613379613048565b500390565b600063ffffffff8381169083168181101561339b5761339b613048565b039392505050565b600063ffffffff8083168185168083038211156133c2576133c2613048565b01949350505050565b6000845160005b818110156133ec57602081880181015185830152016133d2565b818111156133fb576000828501525b509190910192835250602082015260400191905056fea164736f6c634300080f000a"
func init() { func init() {
......
...@@ -472,7 +472,12 @@ contract PreimageOracle is IPreimageOracle { ...@@ -472,7 +472,12 @@ contract PreimageOracle is IPreimageOracle {
); );
// If the proposal is being finalized, set the timestamp to the current block timestamp. This begins the // If the proposal is being finalized, set the timestamp to the current block timestamp. This begins the
// challenge period, which must be waited out before the proposal can be finalized. // challenge period, which must be waited out before the proposal can be finalized.
if (_finalize) metaData = metaData.setTimestamp(uint64(block.timestamp)); if (_finalize) {
metaData = metaData.setTimestamp(uint64(block.timestamp));
// If the number of bytes processed is not equal to the claimed size, the proposal cannot be finalized.
if (metaData.bytesProcessed() != metaData.claimedSize()) revert InvalidInputSize();
}
// Perist the latest branch to storage. // Perist the latest branch to storage.
proposalBranches[msg.sender][_uuid] = branch; proposalBranches[msg.sender][_uuid] = branch;
...@@ -586,10 +591,6 @@ contract PreimageOracle is IPreimageOracle { ...@@ -586,10 +591,6 @@ contract PreimageOracle is IPreimageOracle {
revert StatesNotContiguous(); revert StatesNotContiguous();
} }
// The claimed size must match the actual size of the preimage.
uint256 claimedSize = metaData.claimedSize();
if (metaData.bytesProcessed() != claimedSize) revert InvalidInputSize();
// Absorb and permute the input bytes. We perform no final verification on the state matrix here, since the // Absorb and permute the input bytes. We perform no final verification on the state matrix here, since the
// proposal has passed the challenge period and is considered valid. // proposal has passed the challenge period and is considered valid.
LibKeccak.absorb(_stateMatrix, _postState.input); LibKeccak.absorb(_stateMatrix, _postState.input);
...@@ -603,7 +604,7 @@ contract PreimageOracle is IPreimageOracle { ...@@ -603,7 +604,7 @@ contract PreimageOracle is IPreimageOracle {
uint256 partOffset = metaData.partOffset(); uint256 partOffset = metaData.partOffset();
preimagePartOk[finalDigest][partOffset] = true; preimagePartOk[finalDigest][partOffset] = true;
preimageParts[finalDigest][partOffset] = proposalParts[_claimant][_uuid]; preimageParts[finalDigest][partOffset] = proposalParts[_claimant][_uuid];
preimageLengths[finalDigest] = claimedSize; preimageLengths[finalDigest] = metaData.claimedSize();
} }
/// @notice Gets the current merkle root of the large preimage proposal tree. /// @notice Gets the current merkle root of the large preimage proposal tree.
......
...@@ -250,6 +250,26 @@ contract PreimageOracle_LargePreimageProposals_Test is Test { ...@@ -250,6 +250,26 @@ contract PreimageOracle_LargePreimageProposals_Test is Test {
console.log("Gas for 4MB: %d", (gasUsed / data.length) * 4000000); console.log("Gas for 4MB: %d", (gasUsed / data.length) * 4000000);
} }
/// @notice Tests that `addLeavesLPP` sets the proposal as countered when `_finalize = true` and the number of
/// bytes processed is less than the claimed size.
function test_addLeaves_mismatchedSize_succeeds() public {
// Allocate the preimage data.
bytes memory data = new bytes(136);
for (uint256 i; i < data.length; i++) {
data[i] = 0xFF;
}
// Initialize the proposal.
oracle.initLPP(TEST_UUID, 0, uint32(data.length + 1));
// Add the leaves to the tree (2 keccak blocks.)
LibKeccak.StateMatrix memory stateMatrix;
bytes32[] memory stateCommitments = _generateStateCommitments(stateMatrix, data);
vm.expectRevert(InvalidInputSize.selector);
oracle.addLeavesLPP(TEST_UUID, 0, data, stateCommitments, true);
}
/// @notice Tests that the `addLeavesLPP` function may never be called when `tx.origin != msg.sender` /// @notice Tests that the `addLeavesLPP` function may never be called when `tx.origin != msg.sender`
function test_addLeaves_notEOA_reverts() public { function test_addLeaves_notEOA_reverts() public {
// Allocate the preimage data. // Allocate the preimage data.
...@@ -631,51 +651,6 @@ contract PreimageOracle_LargePreimageProposals_Test is Test { ...@@ -631,51 +651,6 @@ contract PreimageOracle_LargePreimageProposals_Test is Test {
}); });
} }
/// @notice Tests that the `squeeze` function reverts when the claimed size is not equal to the bytes processed.
function test_squeeze_invalidClaimedSize_reverts() public {
// Allocate the preimage data.
bytes memory data = new bytes(136);
for (uint256 i; i < data.length; i++) {
data[i] = 0xFF;
}
// Initialize the proposal.
oracle.initLPP(TEST_UUID, 0, uint32(data.length) - 1);
// Add the leaves to the tree (2 keccak blocks.)
LibKeccak.StateMatrix memory stateMatrix;
bytes32[] memory stateCommitments = _generateStateCommitments(stateMatrix, data);
oracle.addLeavesLPP(TEST_UUID, 0, data, stateCommitments, true);
// Construct the leaf preimage data for the blocks added.
LibKeccak.StateMatrix memory matrix;
PreimageOracle.Leaf[] memory leaves = _generateLeaves(matrix, data);
// Create a proof array with 16 elements.
bytes32[] memory preProof = new bytes32[](16);
preProof[0] = _hashLeaf(leaves[1]);
bytes32[] memory postProof = new bytes32[](16);
postProof[0] = _hashLeaf(leaves[0]);
for (uint256 i = 1; i < preProof.length; i++) {
bytes32 zeroHash = oracle.zeroHashes(i);
preProof[i] = zeroHash;
postProof[i] = zeroHash;
}
vm.warp(block.timestamp + oracle.challengePeriod() + 1 seconds);
vm.expectRevert(InvalidInputSize.selector);
oracle.squeezeLPP({
_claimant: address(this),
_uuid: TEST_UUID,
_stateMatrix: _stateMatrixAtBlockIndex(data, 1),
_preState: leaves[0],
_preStateProof: preProof,
_postState: leaves[1],
_postStateProof: postProof
});
}
/// @notice Tests that squeezing a large preimage proposal after the challenge period has passed always succeeds and /// @notice Tests that squeezing a large preimage proposal after the challenge period has passed always succeeds and
/// persists the correct data. /// persists the correct data.
function testFuzz_squeeze_succeeds(uint256 _numBlocks, uint32 _partOffset) public { function testFuzz_squeeze_succeeds(uint256 _numBlocks, uint32 _partOffset) public {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment