Commit 07a0d782 authored by clabby's avatar clabby

:broom: `MIPS.sol` switch for VM status

dedup
parent 20d41c4a
......@@ -38,7 +38,7 @@ type IFaultDisputeGameOutputProposal struct {
// FaultDisputeGameMetaData contains all meta data concerning the FaultDisputeGame contract.
var FaultDisputeGameMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"GameType\",\"name\":\"_gameType\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"_absolutePrestate\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_maxGameDepth\",\"type\":\"uint256\"},{\"internalType\":\"Duration\",\"name\":\"_gameDuration\",\"type\":\"uint64\"},{\"internalType\":\"contractIBigStepper\",\"name\":\"_vm\",\"type\":\"address\"},{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2oo\",\"type\":\"address\"},{\"internalType\":\"contractBlockOracle\",\"name\":\"_blockOracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotDefendRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClaimAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ClockTimeExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameDepthExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GameNotInProgress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrestate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"L1HeadTooOld\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim\",\"type\":\"bytes32\"}],\"name\":\"UnexpectedRootClaim\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ValidStep\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"parentIndex\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"claimant\",\"type\":\"address\"}],\"name\":\"Move\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enumGameStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ABSOLUTE_PRESTATE\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLOCK_ORACLE\",\"outputs\":[{\"internalType\":\"contractBlockOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAME_DURATION\",\"outputs\":[{\"internalType\":\"Duration\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_OUTPUT_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_GAME_DEPTH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VM\",\"outputs\":[{\"internalType\":\"contractIBigStepper\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_ident\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_partOffset\",\"type\":\"uint256\"}],\"name\":\"addLocalData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"attack\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondManager\",\"outputs\":[{\"internalType\":\"contractIBondManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimData\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"parentIndex\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"countered\",\"type\":\"bool\"},{\"internalType\":\"Claim\",\"name\":\"claim\",\"type\":\"bytes32\"},{\"internalType\":\"Position\",\"name\":\"position\",\"type\":\"uint128\"},{\"internalType\":\"Clock\",\"name\":\"clock\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimDataLen\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"len_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createdAt\",\"outputs\":[{\"internalType\":\"Timestamp\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_parentIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"}],\"name\":\"defend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"extraData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameData\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"},{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"extraData_\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gameType\",\"outputs\":[{\"internalType\":\"GameType\",\"name\":\"gameType_\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l1BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Head\",\"outputs\":[{\"internalType\":\"Hash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2BlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"l2BlockNumber_\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_challengeIndex\",\"type\":\"uint256\"},{\"internalType\":\"Claim\",\"name\":\"_claim\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"}],\"name\":\"move\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposals\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"starting\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint128\",\"name\":\"index\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2BlockNumber\",\"type\":\"uint128\"},{\"internalType\":\"Hash\",\"name\":\"outputRoot\",\"type\":\"bytes32\"}],\"internalType\":\"structIFaultDisputeGame.OutputProposal\",\"name\":\"disputed\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolve\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"status_\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rootClaim\",\"outputs\":[{\"internalType\":\"Claim\",\"name\":\"rootClaim_\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"status\",\"outputs\":[{\"internalType\":\"enumGameStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_claimIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isAttack\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
Bin: "0x6101c06040523480156200001257600080fd5b5060405162002d9238038062002d928339810160408190526200003591620000a1565b6000608081905260a052600860c05260ff9096166101a05260e094909452610100929092526001600160401b0316610120526001600160a01b039081166101405290811661016052166101805262000145565b6001600160a01b03811681146200009e57600080fd5b50565b600080600080600080600060e0888a031215620000bd57600080fd5b875160ff81168114620000cf57600080fd5b602089015160408a015160608b015192995090975095506001600160401b0381168114620000fc57600080fd5b60808901519094506200010f8162000088565b60a0890151909350620001228162000088565b60c0890151909250620001358162000088565b8091505092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612b766200021c600039600081816105220152611f3c01526000818161035e015261177e01526000818161059b0152818161154b0152818161161f01526116f80152600081816104ec015281816107450152611cbb0152600081816105cf01528181610ab7015261109801526000818161032a015281816109bf01528181610ed70152611a7a0152600081816102210152611bd601526000610d3401526000610d0b01526000610ce20152612b766000f3fe6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612417565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612468565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b4366004612417565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b604051610206919061251f565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b604051610206929190612539565b34801561043e57600080fd5b50610395610d7e565b6101d16104553660046125a2565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d1610618366004612417565b611954565b34801561062957600080fd5b5061063d6106383660046125d7565b611960565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd366004612639565b6119d1565b3480156106ce57600080fd5b506106d7611f3a565b604051610206939291906126c3565b6000805468010000000000000000900460ff16600281111561070a5761070a612439565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906126ee565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb612439565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460009061091490600190612753565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e61276a565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611f97565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a1461276a565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b61276a565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff831642612753565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e9190612799565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c0191906127e0565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c80612439565b021790556002811115610c9557610c95612439565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f000000000000000000000000000000000000000000000000000000000000000061204c565b610d2f7f000000000000000000000000000000000000000000000000000000000000000061204c565b610d587f000000000000000000000000000000000000000000000000000000000000000061204c565b604051602001610d6a93929190612807565b604051602081830303815290604052905090565b6060610cc660206040612189565b6000805468010000000000000000900460ff166002811115610db057610db0612439565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f61276a565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed39190859061222016565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff16815481106110035761100361276a565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166110819190612799565b61108b9190612753565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e361276a565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560001a6001146113f7576040517ff40239db000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335600482015260240160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff8152602081019290925260029190810161147c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f0064206115a560207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b81526004016115c391815260200190565b602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061287d565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761164f600185612753565b6040518263ffffffff1660e01b815260040161166d91815260200190565b606060405180830381865afa15801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae91906128e5565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176391906128e5565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b81526004016117ef91815260200190565b6040805180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190612971565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161161188e576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182529081908101806118a9600189612753565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b6002818154811061197057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156119f5576119f5612439565b14611a2c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611a4157611a4161276a565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611aa07f00000000000000000000000000000000000000000000000000000000000000006001612799565b611b3c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611b7d576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611c0057611ba1836fffffffffffffffffffffffffffffffff16612228565b67ffffffffffffffff1615611bd457611bcb611bbe6001866129f8565b865463ffffffff166122ce565b60010154611bf6565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611c1a565b84600101549150611c17846001611bbe9190612a29565b90505b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216611c7b8a8a604051611c4f929190612a5d565b60405180910390207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b14611cb2576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611d189493929190612ab6565b6020604051808303816000875af1158015611d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5b919061287d565b600284810154929091149250600091611e06906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611ea2886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611eac9190612ae8565b611eb691906127e0565b67ffffffffffffffff161590508115158103611efe576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611f90610d7e565b9050909192565b600080612024847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361208f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156120b957806120a381612b09565b91506120b29050600a83612b41565b9150612093565b60008167ffffffffffffffff8111156120d4576120d4612896565b6040519080825280601f01601f1916602001820160405280156120fe576020820181803683370190505b5090505b841561218157612113600183612753565b9150612120600a86612b55565b61212b906030612799565b60f81b8183815181106121405761214061276a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061217a600a86612b41565b9450612102565b949350505050565b606060006121c084367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612799565b90508267ffffffffffffffff1667ffffffffffffffff8111156121e5576121e5612896565b6040519080825280601f01601f19166020018201604052801561220f576020820181803683370190505b509150828160208401375092915050565b151760011b90565b6000806122b5837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806122ec846fffffffffffffffffffffffffffffffff1661236b565b9050600283815481106123015761230161276a565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461236457815460028054909163ffffffff1690811061234f5761234f61276a565b90600052602060002090600302019150612312565b5092915050565b600081196001830116816123ff827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561242a57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106124a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156124c45781810151838201526020016124ac565b8381111561089f5750506000910152565b600081518084526124ed8160208601602086016124a9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061253260208301846124d5565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612532565b8035801515811461259d57600080fd5b919050565b6000806000606084860312156125b757600080fd5b83359250602084013591506125ce6040850161258d565b90509250925092565b6000602082840312156125e957600080fd5b5035919050565b60008083601f84011261260257600080fd5b50813567ffffffffffffffff81111561261a57600080fd5b60208301915083602082850101111561263257600080fd5b9250929050565b6000806000806000806080878903121561265257600080fd5b863595506126626020880161258d565b9450604087013567ffffffffffffffff8082111561267f57600080fd5b61268b8a838b016125f0565b909650945060608901359150808211156126a457600080fd5b506126b189828a016125f0565b979a9699509497509295939492505050565b60ff841681528260208201526060604082015260006126e560608301846124d5565b95945050505050565b60006020828403121561270057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461253257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561276557612765612724565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156127ac576127ac612724565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806127fb576127fb6127b1565b92169190910692915050565b600084516128198184602089016124a9565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612855816001850160208a016124a9565b600192019182015283516128708160028401602088016124a9565b0160020195945050505050565b60006020828403121561288f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461259d57600080fd5b6000606082840312156128f757600080fd5b6040516060810181811067ffffffffffffffff82111715612941577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612954602084016128c5565b6020820152612965604084016128c5565b60408201529392505050565b60006040828403121561298357600080fd5b6040516040810167ffffffffffffffff82821081831117156129ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b81604052845183526020850151915080821682146129eb57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612a2157612a21612724565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612a5457612a54612724565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612aca604083018688612a6d565b8281036020840152612add818587612a6d565b979650505050505050565b600067ffffffffffffffff83811690831681811015612a2157612a21612724565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b3a57612b3a612724565b5060010190565b600082612b5057612b506127b1565b500490565b600082612b6457612b646127b1565b50069056fea164736f6c634300080f000a",
Bin: "0x6101c06040523480156200001257600080fd5b5060405162002d9238038062002d928339810160408190526200003591620000a1565b6000608081905260a052600960c05260ff9096166101a05260e094909452610100929092526001600160401b0316610120526001600160a01b039081166101405290811661016052166101805262000145565b6001600160a01b03811681146200009e57600080fd5b50565b600080600080600080600060e0888a031215620000bd57600080fd5b875160ff81168114620000cf57600080fd5b602089015160408a015160608b015192995090975095506001600160401b0381168114620000fc57600080fd5b60808901519094506200010f8162000088565b60a0890151909350620001228162000088565b60c0890151909250620001358162000088565b8091505092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051612b766200021c600039600081816105220152611f3c01526000818161035e015261177e01526000818161059b0152818161154b0152818161161f01526116f80152600081816104ec015281816107450152611cbb0152600081816105cf01528181610ab7015261109801526000818161032a015281816109bf01528181610ed70152611a7a0152600081816102210152611bd601526000610d3401526000610d0b01526000610ce20152612b766000f3fe6080604052600436106101ac5760003560e01c80636361506d116100ec578063c0c3a0921161008a578063c6f0308c11610064578063c6f0308c1461061d578063cf09e0d014610681578063d8cc1a3c146106a2578063fa24f743146106c257600080fd5b8063c0c3a09214610589578063c31b29ce146105bd578063c55cd0c71461060a57600080fd5b80638b85902b116100c65780638b85902b1461049a57806392931298146104da578063bbdc02db1461050e578063bcef3b551461054c57600080fd5b80636361506d1461045a5780638129fc1c146104705780638980e0cc1461048557600080fd5b8063363cc4271161015957806354fd4d501161013357806354fd4d501461038057806355ef20e6146103a2578063609d333414610432578063632247ea1461044757600080fd5b8063363cc427146102b95780634778efe814610318578063529184c91461034c57600080fd5b80632810e1d61161018a5780632810e1d614610251578063298c90051461026657806335fef567146102a657600080fd5b80631e27052a146101b1578063200d2ed2146101d3578063266198f91461020f575b600080fd5b3480156101bd57600080fd5b506101d16101cc366004612417565b6106e6565b005b3480156101df57600080fd5b506000546101f99068010000000000000000900460ff1681565b6040516102069190612468565b60405180910390f35b34801561021b57600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610206565b34801561025d57600080fd5b506101f96108a5565b34801561027257600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360400135610243565b6101d16102b4366004612417565b610ccb565b3480156102c557600080fd5b506000546102f3906901000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610206565b34801561032457600080fd5b506102437f000000000000000000000000000000000000000000000000000000000000000081565b34801561035857600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561038c57600080fd5b50610395610cdb565b604051610206919061251f565b3480156103ae57600080fd5b5060408051606080820183526003546fffffffffffffffffffffffffffffffff808216845270010000000000000000000000000000000091829004811660208086019190915260045485870152855193840186526005548083168552929092041690820152600654928101929092526104249182565b604051610206929190612539565b34801561043e57600080fd5b50610395610d7e565b6101d16104553660046125a2565b610d8c565b34801561046657600080fd5b5061024360015481565b34801561047c57600080fd5b506101d1611360565b34801561049157600080fd5b50600254610243565b3480156104a657600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900360200135610243565b3480156104e657600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b34801561051a57600080fd5b5060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610206565b34801561055857600080fd5b50367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335610243565b34801561059557600080fd5b506102f37f000000000000000000000000000000000000000000000000000000000000000081565b3480156105c957600080fd5b506105f17f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610206565b6101d1610618366004612417565b611954565b34801561062957600080fd5b5061063d6106383660046125d7565b611960565b6040805163ffffffff90961686529315156020860152928401919091526fffffffffffffffffffffffffffffffff908116606084015216608082015260a001610206565b34801561068d57600080fd5b506000546105f19067ffffffffffffffff1681565b3480156106ae57600080fd5b506101d16106bd366004612639565b6119d1565b3480156106ce57600080fd5b506106d7611f3a565b604051610206939291906126c3565b6000805468010000000000000000900460ff16600281111561070a5761070a612439565b14610741576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d291906126ee565b7f9a1f5e7f00000000000000000000000000000000000000000000000000000000601c8190526020859052909150600084600181146108395760028114610843576003811461084d576004811461085757600581146108675763ff137e656000526004601cfd5b600154915061086e565b600454915061086e565b600654915061086e565b60035460801c60c01b915061086e565b4660c01b91505b50604052600160038511811b6005031b60605260808390526000806084601c82865af161089f573d6000803e3d6000fd5b50505050565b60008060005468010000000000000000900460ff1660028111156108cb576108cb612439565b14610902576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025460009061091490600190612753565b90506fffffffffffffffffffffffffffffffff815b67ffffffffffffffff8110156109fe5760006002828154811061094e5761094e61276a565b6000918252602090912060039091020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019290915060ff640100000000909104161561099f5750610929565b60028101546000906109e3906fffffffffffffffffffffffffffffffff167f0000000000000000000000000000000000000000000000000000000000000000611f97565b9050838110156109f7578093508260010194505b5050610929565b50600060028381548110610a1457610a1461276a565b600091825260208220600390910201805490925063ffffffff90811691908214610a7e5760028281548110610a4b57610a4b61276a565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff16610aaa565b600283015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c16610aee67ffffffffffffffff831642612753565b610b0a836fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff16610b1e9190612799565b11610b55576040517ff2440b5300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600283810154610bf7906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b610c0191906127e0565b67ffffffffffffffff16158015610c2857506fffffffffffffffffffffffffffffffff8414155b15610c365760029550610c3b565b600195505b600080548791907fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff1668010000000000000000836002811115610c8057610c80612439565b021790556002811115610c9557610c95612439565b6040517f5e186f09b9c93491f14e277eea7faa5de6a2d4bda75a79af7a3684fbfb42da6090600090a2505050505090565b905090565b610cd782826000610d8c565b5050565b6060610d067f000000000000000000000000000000000000000000000000000000000000000061204c565b610d2f7f000000000000000000000000000000000000000000000000000000000000000061204c565b610d587f000000000000000000000000000000000000000000000000000000000000000061204c565b604051602001610d6a93929190612807565b604051602081830303815290604052905090565b6060610cc660206040612189565b6000805468010000000000000000900460ff166002811115610db057610db0612439565b14610de7576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82158015610df3575080155b15610e2a576040517fa42637bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028481548110610e3f57610e3f61276a565b600091825260208083206040805160a081018252600394909402909101805463ffffffff808216865264010000000090910460ff16151593850193909352600181015491840191909152600201546fffffffffffffffffffffffffffffffff80821660608501819052700100000000000000000000000000000000909204166080840152919350610ed39190859061222016565b90507f0000000000000000000000000000000000000000000000000000000000000000610f92826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff161115610fd4576040517f56f57b2b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160009063ffffffff90811614611034576002836000015163ffffffff16815481106110035761100361276a565b906000526020600020906003020160020160109054906101000a90046fffffffffffffffffffffffffffffffff1690505b608083015160009067ffffffffffffffff1667ffffffffffffffff164261106d846fffffffffffffffffffffffffffffffff1660401c90565b67ffffffffffffffff166110819190612799565b61108b9190612753565b9050677fffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000060011c1667ffffffffffffffff821611156110fe576040517f3381d11400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000604082901b42179050600061111f888660009182526020526040902090565b60008181526007602052604090205490915060ff161561116b576040517f80497e3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260076020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155815160a08101835263ffffffff808f1682529381018581529281018d81526fffffffffffffffffffffffffffffffff808c16606084019081528982166080850190815260028054808801825599819052945160039099027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace8101805498511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000009099169a909916999099179690961790965590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf8701559351925184167001000000000000000000000000000000000292909316919091177f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad09093019290925580548b9081106112e3576112e361276a565b6000918252602082206003909102018054921515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff9093169290921790915560405133918a918c917f9b3245740ec3b155098a55be84957a4da13eaf7f14a8bc6f53126c0b9350f2be91a4505050505050505050565b367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c90033560001a6001146113f7576040517ff40239db000000000000000000000000000000000000000000000000000000008152367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c900335600482015260240160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000164267ffffffffffffffff161781556040805160a08101825263ffffffff8152602081019290925260029190810161147c7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c90033590565b815260016020820152604001426fffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602080862085516003909402018054918601511515640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090921663ffffffff909416939093171782556040840151908201556060830151608090930151821670010000000000000000000000000000000002929091169190911760029091015573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016637f0064206115a560207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe369081013560f01c9003013590565b6040518263ffffffff1660e01b81526004016115c391815260200190565b602060405180830381865afa1580156115e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611604919061287d565b9050600073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a25ae55761164f600185612753565b6040518263ffffffff1660e01b815260040161166d91815260200190565b606060405180830381865afa15801561168a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ae91906128e5565b6040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810184905290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a25ae55790602401606060405180830381865afa15801561173f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176391906128e5565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166399d548aa367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003604001356040518263ffffffff1660e01b81526004016117ef91815260200190565b6040805180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182f9190612971565b905081602001516fffffffffffffffffffffffffffffffff16816020015167ffffffffffffffff161161188e576040517f13809ba500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182529081908101806118a9600189612753565b6fffffffffffffffffffffffffffffffff9081168252604088810151821660208085019190915298519281019290925291835280516060810182529782168852858101518216888801529451878601529085019590955280518051818601519087167001000000000000000000000000000000009188168202176003559084015160045590840151805194810151948616949095160292909217600555919091015160065551600155565b610cd782826001610d8c565b6002818154811061197057600080fd5b600091825260209091206003909102018054600182015460029092015463ffffffff8216935064010000000090910460ff1691906fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041685565b6000805468010000000000000000900460ff1660028111156119f5576119f5612439565b14611a2c576040517f67fe195000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060028781548110611a4157611a4161276a565b6000918252602082206003919091020160028101549092506fffffffffffffffffffffffffffffffff16908715821760011b9050611aa07f00000000000000000000000000000000000000000000000000000000000000006001612799565b611b3c826fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1614611b7d576040517f5f53dd9800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808915611c0057611ba1836fffffffffffffffffffffffffffffffff16612228565b67ffffffffffffffff1615611bd457611bcb611bbe6001866129f8565b865463ffffffff166122ce565b60010154611bf6565b7f00000000000000000000000000000000000000000000000000000000000000005b9150849050611c1a565b84600101549150611c17846001611bbe9190612a29565b90505b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8216611c7b8a8a604051611c4f929190612a5d565b60405180910390207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690565b14611cb2576040517f696550ff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600101547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f8e0cb968c8c8c8c6040518563ffffffff1660e01b8152600401611d189493929190612ab6565b6020604051808303816000875af1158015611d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5b919061287d565b600284810154929091149250600091611e06906fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611ea2886fffffffffffffffffffffffffffffffff167e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b611eac9190612ae8565b611eb691906127e0565b67ffffffffffffffff161590508115158103611efe576040517ffb4e40dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505084547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffff166401000000001790945550505050505050505050565b7f0000000000000000000000000000000000000000000000000000000000000000367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003356060611f90610d7e565b9050909192565b600080612024847e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff1690508083036001841b600180831b0386831b17039250505092915050565b60608160000361208f57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156120b957806120a381612b09565b91506120b29050600a83612b41565b9150612093565b60008167ffffffffffffffff8111156120d4576120d4612896565b6040519080825280601f01601f1916602001820160405280156120fe576020820181803683370190505b5090505b841561218157612113600183612753565b9150612120600a86612b55565b61212b906030612799565b60f81b8183815181106121405761214061276a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535061217a600a86612b41565b9450612102565b949350505050565b606060006121c084367ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81013560f01c9003612799565b90508267ffffffffffffffff1667ffffffffffffffff8111156121e5576121e5612896565b6040519080825280601f01601f19166020018201604052801561220f576020820181803683370190505b509150828160208401375092915050565b151760011b90565b6000806122b5837e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b600167ffffffffffffffff919091161b90920392915050565b6000806122ec846fffffffffffffffffffffffffffffffff1661236b565b9050600283815481106123015761230161276a565b906000526020600020906003020191505b60028201546fffffffffffffffffffffffffffffffff82811691161461236457815460028054909163ffffffff1690811061234f5761234f61276a565b90600052602060002090600302019150612312565b5092915050565b600081196001830116816123ff827e09010a0d15021d0b0e10121619031e080c141c0f111807131b17061a05041f7f07c4acdd0000000000000000000000000000000000000000000000000000000067ffffffffffffffff831160061b83811c63ffffffff1060051b1792831c600181901c17600281901c17600481901c17600881901c17601081901c170260fb1c1a1790565b67ffffffffffffffff169390931c8015179392505050565b6000806040838503121561242a57600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106124a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60005b838110156124c45781810151838201526020016124ac565b8381111561089f5750506000910152565b600081518084526124ed8160208601602086016124a9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061253260208301846124d5565b9392505050565b82516fffffffffffffffffffffffffffffffff90811682526020808501518216818401526040808601518185015284518316606085015290840151909116608083015282015160a082015260c08101612532565b8035801515811461259d57600080fd5b919050565b6000806000606084860312156125b757600080fd5b83359250602084013591506125ce6040850161258d565b90509250925092565b6000602082840312156125e957600080fd5b5035919050565b60008083601f84011261260257600080fd5b50813567ffffffffffffffff81111561261a57600080fd5b60208301915083602082850101111561263257600080fd5b9250929050565b6000806000806000806080878903121561265257600080fd5b863595506126626020880161258d565b9450604087013567ffffffffffffffff8082111561267f57600080fd5b61268b8a838b016125f0565b909650945060608901359150808211156126a457600080fd5b506126b189828a016125f0565b979a9699509497509295939492505050565b60ff841681528260208201526060604082015260006126e560608301846124d5565b95945050505050565b60006020828403121561270057600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461253257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561276557612765612724565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156127ac576127ac612724565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600067ffffffffffffffff808416806127fb576127fb6127b1565b92169190910692915050565b600084516128198184602089016124a9565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551612855816001850160208a016124a9565b600192019182015283516128708160028401602088016124a9565b0160020195945050505050565b60006020828403121561288f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b80516fffffffffffffffffffffffffffffffff8116811461259d57600080fd5b6000606082840312156128f757600080fd5b6040516060810181811067ffffffffffffffff82111715612941577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405282518152612954602084016128c5565b6020820152612965604084016128c5565b60408201529392505050565b60006040828403121561298357600080fd5b6040516040810167ffffffffffffffff82821081831117156129ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b81604052845183526020850151915080821682146129eb57600080fd5b5060208201529392505050565b60006fffffffffffffffffffffffffffffffff83811690831681811015612a2157612a21612724565b039392505050565b60006fffffffffffffffffffffffffffffffff808316818516808303821115612a5457612a54612724565b01949350505050565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000612aca604083018688612a6d565b8281036020840152612add818587612a6d565b979650505050505050565b600067ffffffffffffffff83811690831681811015612a2157612a21612724565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b3a57612b3a612724565b5060010190565b600082612b5057612b506127b1565b500490565b600082612b6457612b646127b1565b50069056fea164736f6c634300080f000a",
}
// FaultDisputeGameABI is the input ABI used to generate the binding from.
......
......@@ -31,7 +31,7 @@ var (
// MIPSMetaData contains all meta data concerning the MIPS contract.
var MIPSMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[{\"internalType\":\"contractIPreimageOracle\",\"name\":\"_oracle\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BRK_START\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"contractIPreimageOracle\",\"name\":\"oracle_\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"stateData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"step\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]",
Bin: "0x60a060405234801561001057600080fd5b50604051611ecb380380611ecb83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611e3a61009160003960008181608501526116000152611e3a6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d3f565b6100d0565b604051908152602001610062565b60006100da611c6c565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff1690526060810151600090610203908261074e565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff168261080a565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611dab565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611dab565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff166010610904565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611dab565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f685878487610977565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff166010610904565b9095019463fffffffc861661043a81600161074e565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b87565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b8961080a565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a161561130b565b8063ffffffff16600b03610546576104f3858963ffffffff8a16151561130b565b8063ffffffff16600c0361055c576104f36113f1565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f381898988611925565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611dab565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b1f565b6106038583600161130b565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019190855b60208110156106b857601c8601518452602090950194600490930192600101610694565b506000835283830384a061070a565b600081600181146106db5760039150610703565b8380156106f357600181146106fc5760029250610701565b60009250610701565b600192505b505b5092915050565b61071482826106c7565b928490039093207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89290921b91909117949350505050565b60008061075a83611bc3565b9050600384161561076a57600080fd5b6020810190358460051c8160005b601b8110156107d05760208501943583821c60011680156107a057600181146107b5576107c6565b600084815260208390526040902093506107c6565b600082815260208590526040902093505b5050600101610778565b5060805191508181146107eb57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b6000610814611c6c565b60809050806060015160040163ffffffff16816080015163ffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108f357806008018261016001518663ffffffff16602081106108e2576108e2611dab565b63ffffffff90921660209290920201525b6108fb610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610961576000610963565b815b90861663ffffffff16179250505092915050565b6000610981611c6c565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610894565b8663ffffffff1660041480610a2257508663ffffffff166005145b15610a9e5760008261016001518663ffffffff1660208110610a4657610a46611dab565b602002015190508063ffffffff168563ffffffff16148015610a6e57508763ffffffff166004145b80610a9657508063ffffffff168563ffffffff1614158015610a9657508763ffffffff166005145b915050610b1b565b8663ffffffff16600603610abb5760008460030b13159050610b1b565b8663ffffffff16600703610ad75760008460030b139050610b1b565b8663ffffffff16600103610b1b57601f601087901c166000819003610b005760008560030b1291505b8063ffffffff16600103610b195760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b61576002610b468861ffff166010610904565b63ffffffff90811690911b8201600401166080840152610b73565b60808301805160040163ffffffff1690525b610b7b610619565b98975050505050505050565b6000603f601a86901c16801580610bb6575060088163ffffffff1610158015610bb65750600f8163ffffffff16105b1561100c57603f86168160088114610bfd5760098114610c0657600a8114610c0f57600b8114610c1857600c8114610c2157600d8114610c2a57600e8114610c3357610c38565b60209150610c38565b60219150610c38565b602a9150610c38565b602b9150610c38565b60249150610c38565b60259150610c38565b602691505b508063ffffffff16600003610c5f5750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c855750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610cbb57601f600688901c16610cb163ffffffff8716821c6020839003610904565b9350505050610611565b8063ffffffff16600403610cdd5750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610cff5750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d3257610d298663ffffffff168663ffffffff16901c87602003610904565b92505050610611565b8063ffffffff16600803610d4a578592505050610611565b8063ffffffff16600903610d62578592505050610611565b8063ffffffff16600a03610d7a578592505050610611565b8063ffffffff16600b03610d92578592505050610611565b8063ffffffff16600c03610daa578592505050610611565b8063ffffffff16600f03610dc2578592505050610611565b8063ffffffff16601003610dda578592505050610611565b8063ffffffff16601103610df2578592505050610611565b8063ffffffff16601203610e0a578592505050610611565b8063ffffffff16601303610e22578592505050610611565b8063ffffffff16601803610e3a578592505050610611565b8063ffffffff16601903610e52578592505050610611565b8063ffffffff16601a03610e6a578592505050610611565b8063ffffffff16601b03610e82578592505050610611565b8063ffffffff16602003610e9b57505050828201610611565b8063ffffffff16602103610eb457505050828201610611565b8063ffffffff16602203610ecd57505050818303610611565b8063ffffffff16602303610ee657505050818303610611565b8063ffffffff16602403610eff57505050828216610611565b8063ffffffff16602503610f1857505050828217610611565b8063ffffffff16602603610f3157505050828218610611565b8063ffffffff16602703610f4b5750505082821719610611565b8063ffffffff16602a03610f7c578460030b8660030b12610f6d576000610f70565b60015b60ff1692505050610611565b8063ffffffff16602b03610fa4578463ffffffff168663ffffffff1610610f6d576000610f70565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610894565b50610fa4565b8063ffffffff16601c0361109057603f8616600281900361103257505050828202610611565b8063ffffffff166020148061104d57508063ffffffff166021145b15611006578063ffffffff16602003611064579419945b60005b6380000000871615611086576401fffffffe600197881b169601611067565b9250610611915050565b8063ffffffff16600f036110b257505065ffffffff0000601083901b16610611565b8063ffffffff166020036110e6576101d38560031660080260180363ffffffff168463ffffffff16901c60ff166008610904565b8063ffffffff1660210361111b576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff166010610904565b8063ffffffff1660220361114a57505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111615782915050610611565b8063ffffffff16602403611193578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111c6578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111f857505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361122e57505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361126557505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361129457505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112ab5783915050610611565b8063ffffffff16602e036112dd57505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112f45782915050610611565b8063ffffffff16603803610fa45783915050610611565b6000611315611c6c565b506080602063ffffffff861610611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610894565b63ffffffff85161580159061139a5750825b156113ce57838161016001518663ffffffff16602081106113bd576113bd611dab565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108fb610619565b60006113fb611c6c565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036114755781610fff81161561144457610fff811661100003015b8363ffffffff1660000361146b5760e08801805163ffffffff83820116909152955061146f565b8395505b506118e4565b8563ffffffff16610fcd0361149057634000000094506118e4565b8563ffffffff16611018036114a857600194506118e4565b8563ffffffff16611096036114dd57600161012088015260ff83166101008801526114d1610619565b97505050505050505090565b8563ffffffff16610fa3036117475763ffffffff8316156118e4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016117015760006115388363fffffffc16600161074e565b60208901519091508060001a6001036115a5576115a281600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa158015611646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166a9190611dda565b91509150600386168060040382811015611682578092505b508186101561168f578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116e68663fffffffc16600186611b1f565b60408b018051820163ffffffff169052975061174292505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff841601611736578094506118e4565b63ffffffff9450600993505b6118e4565b8563ffffffff16610fa4036118385763ffffffff831660011480611771575063ffffffff83166002145b80611782575063ffffffff83166004145b1561178f578094506118e4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016117365760006117cf8363fffffffc16600161074e565b602089015190915060038416600403838110156117ea578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118e4565b8563ffffffff16610fd7036118e4578163ffffffff166003036118d85763ffffffff8316158061186e575063ffffffff83166005145b8061187f575063ffffffff83166003145b1561188d57600094506118e4565b63ffffffff8316600114806118a8575063ffffffff83166002145b806118b9575063ffffffff83166006145b806118ca575063ffffffff83166004145b1561173657600194506118e4565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114d1610619565b600061192f611c6c565b506080600063ffffffff871660100361194d575060c0810151611ab6565b8663ffffffff1660110361196c5763ffffffff861660c0830152611ab6565b8663ffffffff16601203611985575060a0810151611ab6565b8663ffffffff166013036119a45763ffffffff861660a0830152611ab6565b8663ffffffff166018036119d85763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611ab6565b8663ffffffff16601903611a095763ffffffff86811681871602602081901c821660c08501521660a0830152611ab6565b8663ffffffff16601a03611a5f578460030b8660030b81611a2c57611a2c611dfe565b0763ffffffff1660c0830152600385810b9087900b81611a4e57611a4e611dfe565b0563ffffffff1660a0830152611ab6565b8663ffffffff16601b03611ab6578463ffffffff168663ffffffff1681611a8857611a88611dfe565b0663ffffffff90811660c084015285811690871681611aa957611aa9611dfe565b0463ffffffff1660a08301525b63ffffffff841615611af157808261016001518563ffffffff1660208110611ae057611ae0611dab565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611b14610619565b979650505050505050565b6000611b2a83611bc3565b90506003841615611b3a57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611bb85760208401933582821c6001168015611b885760018114611b9d57611bae565b60008581526020839052604090209450611bae565b600082815260208690526040902094505b5050600101611b60565b505060805250505050565b60ff811661038002610184810190369061050401811015611c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610894565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cd2611cd7565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611d0857600080fd5b50813567ffffffffffffffff811115611d2057600080fd5b602083019150836020828501011115611d3857600080fd5b9250929050565b60008060008060408587031215611d5557600080fd5b843567ffffffffffffffff80821115611d6d57600080fd5b611d7988838901611cf6565b90965094506020870135915080821115611d9257600080fd5b50611d9f87828801611cf6565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611ded57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a",
Bin: "0x60a060405234801561001057600080fd5b50604051611eb2380380611eb283398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611e2161009160003960008181608501526115e70152611e216000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d26565b6100d0565b604051908152602001610062565b60006100da611c53565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff16905260608101516000906102039082610735565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff16826107f1565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611d92565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611d92565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff1660106108eb565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611d92565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f68587848761095e565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff1660106108eb565b9095019463fffffffc861661043a816001610735565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b6e565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b896107f1565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a16156112f2565b8063ffffffff16600b03610546576104f3858963ffffffff8a1615156112f2565b8063ffffffff16600c0361055c576104f36113d8565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f38189898861190c565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611d92565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b06565b610603858360016112f2565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019190855b60208110156106b857601c8601518452602090950194600490930192600101610694565b506000835283830384a06000945080600181146106d85760039550610700565b8280156106f057600181146106f957600296506106fe565b600096506106fe565b600196505b505b50505081900390207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89190911b17919050565b60008061074183611baa565b9050600384161561075157600080fd5b6020810190358460051c8160005b601b8110156107b75760208501943583821c6001168015610787576001811461079c576107ad565b600084815260208390526040902093506107ad565b600082815260208590526040902093505b505060010161075f565b5060805191508181146107d257630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b60006107fb611c53565b60809050806060015160040163ffffffff16816080015163ffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108da57806008018261016001518663ffffffff16602081106108c9576108c9611d92565b63ffffffff90921660209290920201525b6108e2610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b018261094857600061094a565b815b90861663ffffffff16179250505092915050565b6000610968611c53565b608090506000816060015160040163ffffffff16826080015163ffffffff16146109ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f74000000000000000000000000604482015260640161087b565b8663ffffffff1660041480610a0957508663ffffffff166005145b15610a855760008261016001518663ffffffff1660208110610a2d57610a2d611d92565b602002015190508063ffffffff168563ffffffff16148015610a5557508763ffffffff166004145b80610a7d57508063ffffffff168563ffffffff1614158015610a7d57508763ffffffff166005145b915050610b02565b8663ffffffff16600603610aa25760008460030b13159050610b02565b8663ffffffff16600703610abe5760008460030b139050610b02565b8663ffffffff16600103610b0257601f601087901c166000819003610ae75760008560030b1291505b8063ffffffff16600103610b005760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b48576002610b2d8861ffff1660106108eb565b63ffffffff90811690911b8201600401166080840152610b5a565b60808301805160040163ffffffff1690525b610b62610619565b98975050505050505050565b6000603f601a86901c16801580610b9d575060088163ffffffff1610158015610b9d5750600f8163ffffffff16105b15610ff357603f86168160088114610be45760098114610bed57600a8114610bf657600b8114610bff57600c8114610c0857600d8114610c1157600e8114610c1a57610c1f565b60209150610c1f565b60219150610c1f565b602a9150610c1f565b602b9150610c1f565b60249150610c1f565b60259150610c1f565b602691505b508063ffffffff16600003610c465750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c6c5750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610ca257601f600688901c16610c9863ffffffff8716821c60208390036108eb565b9350505050610611565b8063ffffffff16600403610cc45750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610ce65750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d1957610d108663ffffffff168663ffffffff16901c876020036108eb565b92505050610611565b8063ffffffff16600803610d31578592505050610611565b8063ffffffff16600903610d49578592505050610611565b8063ffffffff16600a03610d61578592505050610611565b8063ffffffff16600b03610d79578592505050610611565b8063ffffffff16600c03610d91578592505050610611565b8063ffffffff16600f03610da9578592505050610611565b8063ffffffff16601003610dc1578592505050610611565b8063ffffffff16601103610dd9578592505050610611565b8063ffffffff16601203610df1578592505050610611565b8063ffffffff16601303610e09578592505050610611565b8063ffffffff16601803610e21578592505050610611565b8063ffffffff16601903610e39578592505050610611565b8063ffffffff16601a03610e51578592505050610611565b8063ffffffff16601b03610e69578592505050610611565b8063ffffffff16602003610e8257505050828201610611565b8063ffffffff16602103610e9b57505050828201610611565b8063ffffffff16602203610eb457505050818303610611565b8063ffffffff16602303610ecd57505050818303610611565b8063ffffffff16602403610ee657505050828216610611565b8063ffffffff16602503610eff57505050828217610611565b8063ffffffff16602603610f1857505050828218610611565b8063ffffffff16602703610f325750505082821719610611565b8063ffffffff16602a03610f63578460030b8660030b12610f54576000610f57565b60015b60ff1692505050610611565b8063ffffffff16602b03610f8b578463ffffffff168663ffffffff1610610f54576000610f57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015260640161087b565b50610f8b565b8063ffffffff16601c0361107757603f8616600281900361101957505050828202610611565b8063ffffffff166020148061103457508063ffffffff166021145b15610fed578063ffffffff1660200361104b579419945b60005b638000000087161561106d576401fffffffe600197881b16960161104e565b9250610611915050565b8063ffffffff16600f0361109957505065ffffffff0000601083901b16610611565b8063ffffffff166020036110cd576101d38560031660080260180363ffffffff168463ffffffff16901c60ff1660086108eb565b8063ffffffff16602103611102576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff1660106108eb565b8063ffffffff1660220361113157505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111485782915050610611565b8063ffffffff1660240361117a578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111ad578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111df57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361121557505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361124c57505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361127b57505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112925783915050610611565b8063ffffffff16602e036112c457505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112db5782915050610611565b8063ffffffff16603803610f8b5783915050610611565b60006112fc611c53565b506080602063ffffffff86161061136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015260640161087b565b63ffffffff8516158015906113815750825b156113b557838161016001518663ffffffff16602081106113a4576113a4611d92565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108e2610619565b60006113e2611c53565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa0361145c5781610fff81161561142b57610fff811661100003015b8363ffffffff166000036114525760e08801805163ffffffff838201169091529550611456565b8395505b506118cb565b8563ffffffff16610fcd0361147757634000000094506118cb565b8563ffffffff166110180361148f57600194506118cb565b8563ffffffff16611096036114c457600161012088015260ff83166101008801526114b8610619565b97505050505050505090565b8563ffffffff16610fa30361172e5763ffffffff8316156118cb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016116e857600061151f8363fffffffc166001610735565b60208901519091508060001a60010361158c5761158981600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190611dc1565b91509150600386168060040382811015611669578092505b5081861015611676578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116cd8663fffffffc16600186611b06565b60408b018051820163ffffffff169052975061172992505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff84160161171d578094506118cb565b63ffffffff9450600993505b6118cb565b8563ffffffff16610fa40361181f5763ffffffff831660011480611758575063ffffffff83166002145b80611769575063ffffffff83166004145b15611776578094506118cb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff84160161171d5760006117b68363fffffffc166001610735565b602089015190915060038416600403838110156117d1578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118cb565b8563ffffffff16610fd7036118cb578163ffffffff166003036118bf5763ffffffff83161580611855575063ffffffff83166005145b80611866575063ffffffff83166003145b1561187457600094506118cb565b63ffffffff83166001148061188f575063ffffffff83166002145b806118a0575063ffffffff83166006145b806118b1575063ffffffff83166004145b1561171d57600194506118cb565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114b8610619565b6000611916611c53565b506080600063ffffffff8716601003611934575060c0810151611a9d565b8663ffffffff166011036119535763ffffffff861660c0830152611a9d565b8663ffffffff1660120361196c575060a0810151611a9d565b8663ffffffff1660130361198b5763ffffffff861660a0830152611a9d565b8663ffffffff166018036119bf5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611a9d565b8663ffffffff166019036119f05763ffffffff86811681871602602081901c821660c08501521660a0830152611a9d565b8663ffffffff16601a03611a46578460030b8660030b81611a1357611a13611de5565b0763ffffffff1660c0830152600385810b9087900b81611a3557611a35611de5565b0563ffffffff1660a0830152611a9d565b8663ffffffff16601b03611a9d578463ffffffff168663ffffffff1681611a6f57611a6f611de5565b0663ffffffff90811660c084015285811690871681611a9057611a90611de5565b0463ffffffff1660a08301525b63ffffffff841615611ad857808261016001518563ffffffff1660208110611ac757611ac7611d92565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611afb610619565b979650505050505050565b6000611b1183611baa565b90506003841615611b2157600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611b9f5760208401933582821c6001168015611b6f5760018114611b8457611b95565b60008581526020839052604090209450611b95565b600082815260208690526040902094505b5050600101611b47565b505060805250505050565b60ff811661038002610184810190369061050401811015611c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f6174610000000000000000000000000000000000000000000000000000000000606482015260840161087b565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cb9611cbe565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611cef57600080fd5b50813567ffffffffffffffff811115611d0757600080fd5b602083019150836020828501011115611d1f57600080fd5b9250929050565b60008060008060408587031215611d3c57600080fd5b843567ffffffffffffffff80821115611d5457600080fd5b611d6088838901611cdd565b90965094506020870135915080821115611d7957600080fd5b50611d8687828801611cdd565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611dd457600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a",
}
// MIPSABI is the input ABI used to generate the binding from.
......
......@@ -13,9 +13,9 @@ const MIPSStorageLayoutJSON = "{\"storage\":null,\"types\":{}}"
var MIPSStorageLayout = new(solc.StorageLayout)
var MIPSDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d3f565b6100d0565b604051908152602001610062565b60006100da611c6c565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff1690526060810151600090610203908261074e565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff168261080a565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611dab565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611dab565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff166010610904565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611dab565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f685878487610977565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff166010610904565b9095019463fffffffc861661043a81600161074e565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b87565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b8961080a565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a161561130b565b8063ffffffff16600b03610546576104f3858963ffffffff8a16151561130b565b8063ffffffff16600c0361055c576104f36113f1565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f381898988611925565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611dab565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b1f565b6106038583600161130b565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019190855b60208110156106b857601c8601518452602090950194600490930192600101610694565b506000835283830384a061070a565b600081600181146106db5760039150610703565b8380156106f357600181146106fc5760029250610701565b60009250610701565b600192505b505b5092915050565b61071482826106c7565b928490039093207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89290921b91909117949350505050565b60008061075a83611bc3565b9050600384161561076a57600080fd5b6020810190358460051c8160005b601b8110156107d05760208501943583821c60011680156107a057600181146107b5576107c6565b600084815260208390526040902093506107c6565b600082815260208590526040902093505b5050600101610778565b5060805191508181146107eb57630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b6000610814611c6c565b60809050806060015160040163ffffffff16816080015163ffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108f357806008018261016001518663ffffffff16602081106108e2576108e2611dab565b63ffffffff90921660209290920201525b6108fb610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b0182610961576000610963565b815b90861663ffffffff16179250505092915050565b6000610981611c6c565b608090506000816060015160040163ffffffff16826080015163ffffffff1614610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f740000000000000000000000006044820152606401610894565b8663ffffffff1660041480610a2257508663ffffffff166005145b15610a9e5760008261016001518663ffffffff1660208110610a4657610a46611dab565b602002015190508063ffffffff168563ffffffff16148015610a6e57508763ffffffff166004145b80610a9657508063ffffffff168563ffffffff1614158015610a9657508763ffffffff166005145b915050610b1b565b8663ffffffff16600603610abb5760008460030b13159050610b1b565b8663ffffffff16600703610ad75760008460030b139050610b1b565b8663ffffffff16600103610b1b57601f601087901c166000819003610b005760008560030b1291505b8063ffffffff16600103610b195760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b61576002610b468861ffff166010610904565b63ffffffff90811690911b8201600401166080840152610b73565b60808301805160040163ffffffff1690525b610b7b610619565b98975050505050505050565b6000603f601a86901c16801580610bb6575060088163ffffffff1610158015610bb65750600f8163ffffffff16105b1561100c57603f86168160088114610bfd5760098114610c0657600a8114610c0f57600b8114610c1857600c8114610c2157600d8114610c2a57600e8114610c3357610c38565b60209150610c38565b60219150610c38565b602a9150610c38565b602b9150610c38565b60249150610c38565b60259150610c38565b602691505b508063ffffffff16600003610c5f5750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c855750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610cbb57601f600688901c16610cb163ffffffff8716821c6020839003610904565b9350505050610611565b8063ffffffff16600403610cdd5750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610cff5750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d3257610d298663ffffffff168663ffffffff16901c87602003610904565b92505050610611565b8063ffffffff16600803610d4a578592505050610611565b8063ffffffff16600903610d62578592505050610611565b8063ffffffff16600a03610d7a578592505050610611565b8063ffffffff16600b03610d92578592505050610611565b8063ffffffff16600c03610daa578592505050610611565b8063ffffffff16600f03610dc2578592505050610611565b8063ffffffff16601003610dda578592505050610611565b8063ffffffff16601103610df2578592505050610611565b8063ffffffff16601203610e0a578592505050610611565b8063ffffffff16601303610e22578592505050610611565b8063ffffffff16601803610e3a578592505050610611565b8063ffffffff16601903610e52578592505050610611565b8063ffffffff16601a03610e6a578592505050610611565b8063ffffffff16601b03610e82578592505050610611565b8063ffffffff16602003610e9b57505050828201610611565b8063ffffffff16602103610eb457505050828201610611565b8063ffffffff16602203610ecd57505050818303610611565b8063ffffffff16602303610ee657505050818303610611565b8063ffffffff16602403610eff57505050828216610611565b8063ffffffff16602503610f1857505050828217610611565b8063ffffffff16602603610f3157505050828218610611565b8063ffffffff16602703610f4b5750505082821719610611565b8063ffffffff16602a03610f7c578460030b8660030b12610f6d576000610f70565b60015b60ff1692505050610611565b8063ffffffff16602b03610fa4578463ffffffff168663ffffffff1610610f6d576000610f70565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e000000000000000000000000006044820152606401610894565b50610fa4565b8063ffffffff16601c0361109057603f8616600281900361103257505050828202610611565b8063ffffffff166020148061104d57508063ffffffff166021145b15611006578063ffffffff16602003611064579419945b60005b6380000000871615611086576401fffffffe600197881b169601611067565b9250610611915050565b8063ffffffff16600f036110b257505065ffffffff0000601083901b16610611565b8063ffffffff166020036110e6576101d38560031660080260180363ffffffff168463ffffffff16901c60ff166008610904565b8063ffffffff1660210361111b576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff166010610904565b8063ffffffff1660220361114a57505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111615782915050610611565b8063ffffffff16602403611193578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111c6578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111f857505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361122e57505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361126557505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361129457505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112ab5783915050610611565b8063ffffffff16602e036112dd57505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112f45782915050610611565b8063ffffffff16603803610fa45783915050610611565b6000611315611c6c565b506080602063ffffffff861610611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c69642072656769737465720000000000000000000000000000000000006044820152606401610894565b63ffffffff85161580159061139a5750825b156113ce57838161016001518663ffffffff16602081106113bd576113bd611dab565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108fb610619565b60006113fb611c6c565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa036114755781610fff81161561144457610fff811661100003015b8363ffffffff1660000361146b5760e08801805163ffffffff83820116909152955061146f565b8395505b506118e4565b8563ffffffff16610fcd0361149057634000000094506118e4565b8563ffffffff16611018036114a857600194506118e4565b8563ffffffff16611096036114dd57600161012088015260ff83166101008801526114d1610619565b97505050505050505090565b8563ffffffff16610fa3036117475763ffffffff8316156118e4577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016117015760006115388363fffffffc16600161074e565b60208901519091508060001a6001036115a5576115a281600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa158015611646573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166a9190611dda565b91509150600386168060040382811015611682578092505b508186101561168f578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116e68663fffffffc16600186611b1f565b60408b018051820163ffffffff169052975061174292505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff841601611736578094506118e4565b63ffffffff9450600993505b6118e4565b8563ffffffff16610fa4036118385763ffffffff831660011480611771575063ffffffff83166002145b80611782575063ffffffff83166004145b1561178f578094506118e4565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff8416016117365760006117cf8363fffffffc16600161074e565b602089015190915060038416600403838110156117ea578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118e4565b8563ffffffff16610fd7036118e4578163ffffffff166003036118d85763ffffffff8316158061186e575063ffffffff83166005145b8061187f575063ffffffff83166003145b1561188d57600094506118e4565b63ffffffff8316600114806118a8575063ffffffff83166002145b806118b9575063ffffffff83166006145b806118ca575063ffffffff83166004145b1561173657600194506118e4565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114d1610619565b600061192f611c6c565b506080600063ffffffff871660100361194d575060c0810151611ab6565b8663ffffffff1660110361196c5763ffffffff861660c0830152611ab6565b8663ffffffff16601203611985575060a0810151611ab6565b8663ffffffff166013036119a45763ffffffff861660a0830152611ab6565b8663ffffffff166018036119d85763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611ab6565b8663ffffffff16601903611a095763ffffffff86811681871602602081901c821660c08501521660a0830152611ab6565b8663ffffffff16601a03611a5f578460030b8660030b81611a2c57611a2c611dfe565b0763ffffffff1660c0830152600385810b9087900b81611a4e57611a4e611dfe565b0563ffffffff1660a0830152611ab6565b8663ffffffff16601b03611ab6578463ffffffff168663ffffffff1681611a8857611a88611dfe565b0663ffffffff90811660c084015285811690871681611aa957611aa9611dfe565b0463ffffffff1660a08301525b63ffffffff841615611af157808261016001518563ffffffff1660208110611ae057611ae0611dab565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611b14610619565b979650505050505050565b6000611b2a83611bc3565b90506003841615611b3a57600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611bb85760208401933582821c6001168015611b885760018114611b9d57611bae565b60008581526020839052604090209450611bae565b600082815260208690526040902094505b5050600101611b60565b505060805250505050565b60ff811661038002610184810190369061050401811015611c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f61746100000000000000000000000000000000000000000000000000000000006064820152608401610894565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cd2611cd7565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611d0857600080fd5b50813567ffffffffffffffff811115611d2057600080fd5b602083019150836020828501011115611d3857600080fd5b9250929050565b60008060008060408587031215611d5557600080fd5b843567ffffffffffffffff80821115611d6d57600080fd5b611d7988838901611cf6565b90965094506020870135915080821115611d9257600080fd5b50611d9f87828801611cf6565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611ded57600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var MIPSDeployedBin = "0x608060405234801561001057600080fd5b50600436106100415760003560e01c8063155633fe146100465780637dc0d1d01461006b578063f8e0cb96146100af575b600080fd5b610051634000000081565b60405163ffffffff90911681526020015b60405180910390f35b60405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610062565b6100c26100bd366004611d26565b6100d0565b604051908152602001610062565b60006100da611c53565b608081146100e757600080fd5b604051610600146100f757600080fd5b6064861461010457600080fd5b610184841461011257600080fd5b8535608052602086013560a052604086013560e090811c60c09081526044880135821c82526048880135821c61010052604c880135821c610120526050880135821c61014052605488013590911c61016052605887013560f890811c610180526059880135901c6101a052605a870135901c6101c0526102006101e0819052606287019060005b60208110156101bd57823560e01c8252600490920191602090910190600101610199565b505050806101200151156101db576101d3610619565b915050610611565b6101408101805160010167ffffffffffffffff16905260608101516000906102039082610735565b9050603f601a82901c16600281148061022257508063ffffffff166003145b156102775760006002836303ffffff1663ffffffff16901b846080015163f00000001617905061026c8263ffffffff1660021461026057601f610263565b60005b60ff16826107f1565b945050505050610611565b6101608301516000908190601f601086901c81169190601587901c16602081106102a3576102a3611d92565b602002015192508063ffffffff851615806102c457508463ffffffff16601c145b156102fb578661016001518263ffffffff16602081106102e6576102e6611d92565b6020020151925050601f600b86901c166103b7565b60208563ffffffff16101561035d578463ffffffff16600c148061032557508463ffffffff16600d145b8061033657508463ffffffff16600e145b15610347578561ffff1692506103b7565b6103568661ffff1660106108eb565b92506103b7565b60288563ffffffff1610158061037957508463ffffffff166022145b8061038a57508463ffffffff166026145b156103b7578661016001518263ffffffff16602081106103ac576103ac611d92565b602002015192508190505b60048563ffffffff16101580156103d4575060088563ffffffff16105b806103e557508463ffffffff166001145b15610404576103f68587848761095e565b975050505050505050610611565b63ffffffff6000602087831610610469576104248861ffff1660106108eb565b9095019463fffffffc861661043a816001610735565b915060288863ffffffff161015801561045a57508763ffffffff16603014155b1561046757809250600093505b505b600061047789888885610b6e565b63ffffffff9081169150603f8a1690891615801561049c575060088163ffffffff1610155b80156104ae5750601c8163ffffffff16105b1561058a578063ffffffff16600814806104ce57508063ffffffff166009145b15610505576104f38163ffffffff166008146104ea57856104ed565b60005b896107f1565b9b505050505050505050505050610611565b8063ffffffff16600a03610525576104f3858963ffffffff8a16156112f2565b8063ffffffff16600b03610546576104f3858963ffffffff8a1615156112f2565b8063ffffffff16600c0361055c576104f36113d8565b60108163ffffffff16101580156105795750601c8163ffffffff16105b1561058a576104f38189898861190c565b8863ffffffff1660381480156105a5575063ffffffff861615155b156105da5760018b61016001518763ffffffff16602081106105c9576105c9611d92565b63ffffffff90921660209290920201525b8363ffffffff1663ffffffff146105f7576105f784600184611b06565b610603858360016112f2565b9b5050505050505050505050505b949350505050565b60408051608051815260a051602082015260dc519181019190915260fc51604482015261011c51604882015261013c51604c82015261015c51605082015261017c5160548201526101805161019f5160588301526101a0516101bf5160598401526101d851605a840152600092610200929091606283019190855b60208110156106b857601c8601518452602090950194600490930192600101610694565b506000835283830384a06000945080600181146106d85760039550610700565b8280156106f057600181146106f957600296506106fe565b600096506106fe565b600196505b505b50505081900390207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660f89190911b17919050565b60008061074183611baa565b9050600384161561075157600080fd5b6020810190358460051c8160005b601b8110156107b75760208501943583821c6001168015610787576001811461079c576107ad565b600084815260208390526040902093506107ad565b600082815260208590526040902093505b505060010161075f565b5060805191508181146107d257630badf00d60005260206000fd5b5050601f94909416601c0360031b9390931c63ffffffff169392505050565b60006107fb611c53565b60809050806060015160040163ffffffff16816080015163ffffffff1614610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6a756d7020696e2064656c617920736c6f74000000000000000000000000000060448201526064015b60405180910390fd5b60608101805160808301805163ffffffff9081169093528583169052908516156108da57806008018261016001518663ffffffff16602081106108c9576108c9611d92565b63ffffffff90921660209290920201525b6108e2610619565b95945050505050565b600063ffffffff8381167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80850183169190911c821615159160016020869003821681901b830191861691821b92911b018261094857600061094a565b815b90861663ffffffff16179250505092915050565b6000610968611c53565b608090506000816060015160040163ffffffff16826080015163ffffffff16146109ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6272616e636820696e2064656c617920736c6f74000000000000000000000000604482015260640161087b565b8663ffffffff1660041480610a0957508663ffffffff166005145b15610a855760008261016001518663ffffffff1660208110610a2d57610a2d611d92565b602002015190508063ffffffff168563ffffffff16148015610a5557508763ffffffff166004145b80610a7d57508063ffffffff168563ffffffff1614158015610a7d57508763ffffffff166005145b915050610b02565b8663ffffffff16600603610aa25760008460030b13159050610b02565b8663ffffffff16600703610abe5760008460030b139050610b02565b8663ffffffff16600103610b0257601f601087901c166000819003610ae75760008560030b1291505b8063ffffffff16600103610b005760008560030b121591505b505b606082018051608084015163ffffffff169091528115610b48576002610b2d8861ffff1660106108eb565b63ffffffff90811690911b8201600401166080840152610b5a565b60808301805160040163ffffffff1690525b610b62610619565b98975050505050505050565b6000603f601a86901c16801580610b9d575060088163ffffffff1610158015610b9d5750600f8163ffffffff16105b15610ff357603f86168160088114610be45760098114610bed57600a8114610bf657600b8114610bff57600c8114610c0857600d8114610c1157600e8114610c1a57610c1f565b60209150610c1f565b60219150610c1f565b602a9150610c1f565b602b9150610c1f565b60249150610c1f565b60259150610c1f565b602691505b508063ffffffff16600003610c465750505063ffffffff8216601f600686901c161b610611565b8063ffffffff16600203610c6c5750505063ffffffff8216601f600686901c161c610611565b8063ffffffff16600303610ca257601f600688901c16610c9863ffffffff8716821c60208390036108eb565b9350505050610611565b8063ffffffff16600403610cc45750505063ffffffff8216601f84161b610611565b8063ffffffff16600603610ce65750505063ffffffff8216601f84161c610611565b8063ffffffff16600703610d1957610d108663ffffffff168663ffffffff16901c876020036108eb565b92505050610611565b8063ffffffff16600803610d31578592505050610611565b8063ffffffff16600903610d49578592505050610611565b8063ffffffff16600a03610d61578592505050610611565b8063ffffffff16600b03610d79578592505050610611565b8063ffffffff16600c03610d91578592505050610611565b8063ffffffff16600f03610da9578592505050610611565b8063ffffffff16601003610dc1578592505050610611565b8063ffffffff16601103610dd9578592505050610611565b8063ffffffff16601203610df1578592505050610611565b8063ffffffff16601303610e09578592505050610611565b8063ffffffff16601803610e21578592505050610611565b8063ffffffff16601903610e39578592505050610611565b8063ffffffff16601a03610e51578592505050610611565b8063ffffffff16601b03610e69578592505050610611565b8063ffffffff16602003610e8257505050828201610611565b8063ffffffff16602103610e9b57505050828201610611565b8063ffffffff16602203610eb457505050818303610611565b8063ffffffff16602303610ecd57505050818303610611565b8063ffffffff16602403610ee657505050828216610611565b8063ffffffff16602503610eff57505050828217610611565b8063ffffffff16602603610f1857505050828218610611565b8063ffffffff16602703610f325750505082821719610611565b8063ffffffff16602a03610f63578460030b8660030b12610f54576000610f57565b60015b60ff1692505050610611565b8063ffffffff16602b03610f8b578463ffffffff168663ffffffff1610610f54576000610f57565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f696e76616c696420696e737472756374696f6e00000000000000000000000000604482015260640161087b565b50610f8b565b8063ffffffff16601c0361107757603f8616600281900361101957505050828202610611565b8063ffffffff166020148061103457508063ffffffff166021145b15610fed578063ffffffff1660200361104b579419945b60005b638000000087161561106d576401fffffffe600197881b16960161104e565b9250610611915050565b8063ffffffff16600f0361109957505065ffffffff0000601083901b16610611565b8063ffffffff166020036110cd576101d38560031660080260180363ffffffff168463ffffffff16901c60ff1660086108eb565b8063ffffffff16602103611102576101d38560021660080260100363ffffffff168463ffffffff16901c61ffff1660106108eb565b8063ffffffff1660220361113157505063ffffffff60086003851602811681811b198416918316901b17610611565b8063ffffffff166023036111485782915050610611565b8063ffffffff1660240361117a578460031660080260180363ffffffff168363ffffffff16901c60ff16915050610611565b8063ffffffff166025036111ad578460021660080260100363ffffffff168363ffffffff16901c61ffff16915050610611565b8063ffffffff166026036111df57505063ffffffff60086003851602601803811681811c198416918316901c17610611565b8063ffffffff1660280361121557505060ff63ffffffff60086003861602601803811682811b9091188316918416901b17610611565b8063ffffffff1660290361124c57505061ffff63ffffffff60086002861602601003811682811b9091188316918416901b17610611565b8063ffffffff16602a0361127b57505063ffffffff60086003851602811681811c198316918416901c17610611565b8063ffffffff16602b036112925783915050610611565b8063ffffffff16602e036112c457505063ffffffff60086003851602601803811681811b198316918416901b17610611565b8063ffffffff166030036112db5782915050610611565b8063ffffffff16603803610f8b5783915050610611565b60006112fc611c53565b506080602063ffffffff86161061136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f76616c6964207265676973746572000000000000000000000000000000000000604482015260640161087b565b63ffffffff8516158015906113815750825b156113b557838161016001518663ffffffff16602081106113a4576113a4611d92565b63ffffffff90921660209290920201525b60808101805163ffffffff808216606085015260049091011690526108e2610619565b60006113e2611c53565b506101e051604081015160808083015160a084015160c09094015191936000928392919063ffffffff8616610ffa0361145c5781610fff81161561142b57610fff811661100003015b8363ffffffff166000036114525760e08801805163ffffffff838201169091529550611456565b8395505b506118cb565b8563ffffffff16610fcd0361147757634000000094506118cb565b8563ffffffff166110180361148f57600194506118cb565b8563ffffffff16611096036114c457600161012088015260ff83166101008801526114b8610619565b97505050505050505090565b8563ffffffff16610fa30361172e5763ffffffff8316156118cb577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb63ffffffff8416016116e857600061151f8363fffffffc166001610735565b60208901519091508060001a60010361158c5761158981600090815233602052604090207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01000000000000000000000000000000000000000000000000000000000000001790565b90505b6040808a015190517fe03110e10000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff9091166024820152600090819073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063e03110e1906044016040805180830381865afa15801561162d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116519190611dc1565b91509150600386168060040382811015611669578092505b5081861015611676578591505b8260088302610100031c9250826008828460040303021b9250600180600883600403021b036001806008858560040303021b039150811981169050838119871617955050506116cd8663fffffffc16600186611b06565b60408b018051820163ffffffff169052975061172992505050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd63ffffffff84160161171d578094506118cb565b63ffffffff9450600993505b6118cb565b8563ffffffff16610fa40361181f5763ffffffff831660011480611758575063ffffffff83166002145b80611769575063ffffffff83166004145b15611776578094506118cb565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa63ffffffff84160161171d5760006117b68363fffffffc166001610735565b602089015190915060038416600403838110156117d1578093505b83900360089081029290921c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600193850293841b0116911b176020880152600060408801529350836118cb565b8563ffffffff16610fd7036118cb578163ffffffff166003036118bf5763ffffffff83161580611855575063ffffffff83166005145b80611866575063ffffffff83166003145b1561187457600094506118cb565b63ffffffff83166001148061188f575063ffffffff83166002145b806118a0575063ffffffff83166006145b806118b1575063ffffffff83166004145b1561171d57600194506118cb565b63ffffffff9450601693505b6101608701805163ffffffff808816604090920191909152905185821660e09091015260808801805180831660608b015260040190911690526114b8610619565b6000611916611c53565b506080600063ffffffff8716601003611934575060c0810151611a9d565b8663ffffffff166011036119535763ffffffff861660c0830152611a9d565b8663ffffffff1660120361196c575060a0810151611a9d565b8663ffffffff1660130361198b5763ffffffff861660a0830152611a9d565b8663ffffffff166018036119bf5763ffffffff600387810b9087900b02602081901c821660c08501521660a0830152611a9d565b8663ffffffff166019036119f05763ffffffff86811681871602602081901c821660c08501521660a0830152611a9d565b8663ffffffff16601a03611a46578460030b8660030b81611a1357611a13611de5565b0763ffffffff1660c0830152600385810b9087900b81611a3557611a35611de5565b0563ffffffff1660a0830152611a9d565b8663ffffffff16601b03611a9d578463ffffffff168663ffffffff1681611a6f57611a6f611de5565b0663ffffffff90811660c084015285811690871681611a9057611a90611de5565b0463ffffffff1660a08301525b63ffffffff841615611ad857808261016001518563ffffffff1660208110611ac757611ac7611d92565b63ffffffff90921660209290920201525b60808201805163ffffffff80821660608601526004909101169052611afb610619565b979650505050505050565b6000611b1183611baa565b90506003841615611b2157600080fd5b6020810190601f8516601c0360031b83811b913563ffffffff90911b1916178460051c60005b601b811015611b9f5760208401933582821c6001168015611b6f5760018114611b8457611b95565b60008581526020839052604090209450611b95565b600082815260208690526040902094505b5050600101611b47565b505060805250505050565b60ff811661038002610184810190369061050401811015611c4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f636865636b207468617420746865726520697320656e6f7567682063616c6c6460448201527f6174610000000000000000000000000000000000000000000000000000000000606482015260840161087b565b50919050565b6040805161018081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101611cb9611cbe565b905290565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112611cef57600080fd5b50813567ffffffffffffffff811115611d0757600080fd5b602083019150836020828501011115611d1f57600080fd5b9250929050565b60008060008060408587031215611d3c57600080fd5b843567ffffffffffffffff80821115611d5457600080fd5b611d6088838901611cdd565b90965094506020870135915080821115611d7957600080fd5b50611d8687828801611cdd565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008060408385031215611dd457600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a"
var MIPSDeployedSourceMap = "1131:39637:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;1745:10;1710:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1710:45:105;;;;;;;;2448:99;;;412:42:257;2534:6:105;400:55:257;382:74;;370:2;355:18;2448:99:105;211:251:257;25648:6339:105;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;25648:6339:105;1541:177:257;25648:6339:105;25726:7;25769:18;;:::i;:::-;25916:4;25909:5;25906:15;25896:134;;26010:1;26007;26000:12;25896:134;26066:4;26060:11;26073;26057:28;26047:137;;26164:1;26161;26154:12;26047:137;26232:3;26214:16;26211:25;26201:150;;26331:1;26328;26321:12;26201:150;26395:3;26381:12;26378:21;26368:145;;26493:1;26490;26483:12;26368:145;26773:24;;27117:4;26819:20;27175:2;26877:21;;26773:24;26935:18;26819:20;26877:21;;;26773:24;26750:21;26746:52;;;26935:18;26819:20;;;26877:21;;;26773:24;26746:52;;26819:20;;26877:21;;;26773:24;26746:52;;26935:18;26819:20;26877:21;;;26773:24;26746:52;;26935:18;26819:20;26877:21;;;26773:24;26746:52;;26935:18;26819:20;26877:21;;;26773:24;26746:52;;;26935:18;26819:20;26877:21;;;26773:24;26750:21;26746:52;;;26935:18;26819:20;26877:21;;;26773:24;26746:52;;26935:18;26819:20;26877:21;;;26773:24;26746:52;;26935:18;26819:20;27793:10;26935:18;27783:21;;;26877;;;;27891:1;27876:77;27901:2;27898:1;27895:9;27876:77;;;26773:24;;26750:21;26746:52;26819:20;;27949:1;26877:21;;;;26761:2;26935:18;;;;27919:1;27912:9;27876:77;;;27880:14;;;28031:5;:12;;;28027:71;;;28070:13;:11;:13::i;:::-;28063:20;;;;;28027:71;28112:10;;;:15;;28126:1;28112:15;;;;;28197:8;;;;-1:-1:-1;;28189:20:105;;-1:-1:-1;28189:7:105;:20::i;:::-;28175:34;-1:-1:-1;28239:10:105;28247:2;28239:10;;;;28316:1;28306:11;;;:26;;;28321:6;:11;;28331:1;28321:11;28306:26;28302:310;;;28462:13;28531:1;28509:4;28516:10;28509:17;28508:24;;;;28479:5;:12;;;28494:10;28479:25;28478:54;28462:70;;28557:40;28568:6;:11;;28578:1;28568:11;:20;;28586:2;28568:20;;;28582:1;28568:20;28557:40;;28590:6;28557:10;:40::i;:::-;28550:47;;;;;;;;28302:310;28861:15;;;;28656:9;;;;28793:4;28787:2;28779:10;;;28778:19;;;28861:15;28886:2;28878:10;;;28877:19;28861:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28926:5:105;28950:11;;;;;:29;;;28965:6;:14;;28975:4;28965:14;28950:29;28946:832;;;29042:5;:15;;;29058:5;29042:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;29105:4:105;29099:2;29091:10;;;29090:19;28946:832;;;29143:4;29134:6;:13;;;29130:648;;;29264:6;:13;;29274:3;29264:13;:30;;;;29281:6;:13;;29291:3;29281:13;29264:30;:47;;;;29298:6;:13;;29308:3;29298:13;29264:47;29260:253;;;29374:4;29381:6;29374:13;29369:18;;29130:648;;29260:253;29473:21;29476:4;29483:6;29476:13;29491:2;29473;:21::i;:::-;29468:26;;29130:648;;;29547:4;29537:6;:14;;;;:32;;;;29555:6;:14;;29565:4;29555:14;29537:32;:50;;;;29573:6;:14;;29583:4;29573:14;29537:50;29533:245;;;29657:5;:15;;;29673:5;29657:22;;;;;;;;;:::i;:::-;;;;;29652:27;;29758:5;29750:13;;29533:245;29807:1;29797:6;:11;;;;:25;;;;;29821:1;29812:6;:10;;;29797:25;29796:42;;;;29827:6;:11;;29837:1;29827:11;29796:42;29792:125;;;29865:37;29878:6;29886:4;29892:5;29899:2;29865:12;:37::i;:::-;29858:44;;;;;;;;;;;29792:125;29950:13;29931:16;30102:4;30092:14;;;;30088:446;;30171:21;30174:4;30181:6;30174:13;30189:2;30171;:21::i;:::-;30165:27;;;;30229:10;30224:15;;30263:16;30224:15;30277:1;30263:7;:16::i;:::-;30257:22;;30311:4;30301:6;:14;;;;:32;;;;;30319:6;:14;;30329:4;30319:14;;30301:32;30297:223;;;30398:4;30386:16;;30500:1;30492:9;;30297:223;30108:426;30088:446;30567:10;30580:26;30588:4;30594:2;30598;30602:3;30580:7;:26::i;:::-;30609:10;30580:39;;;;-1:-1:-1;30705:4:105;30698:11;;;30737;;;:24;;;;;30760:1;30752:4;:9;;;;30737:24;:39;;;;;30772:4;30765;:11;;;30737:39;30733:847;;;30800:4;:9;;30808:1;30800:9;:22;;;;30813:4;:9;;30821:1;30813:9;30800:22;30796:144;;;30884:37;30895:4;:9;;30903:1;30895:9;:21;;30911:5;30895:21;;;30907:1;30895:21;30918:2;30884:10;:37::i;:::-;30877:44;;;;;;;;;;;;;;;30796:144;30962:4;:11;;30970:3;30962:11;30958:121;;31032:28;31041:5;31048:2;31052:7;;;;31032:8;:28::i;30958:121::-;31100:4;:11;;31108:3;31100:11;31096:121;;31170:28;31179:5;31186:2;31190:7;;;;;31170:8;:28::i;31096:121::-;31287:4;:11;;31295:3;31287:11;31283:80;;31329:15;:13;:15::i;31283:80::-;31466:4;31458;:12;;;;:27;;;;;31481:4;31474;:11;;;31458:27;31454:112;;;31516:31;31527:4;31533:2;31537;31541:5;31516:10;:31::i;31454:112::-;31640:6;:14;;31650:4;31640:14;:28;;;;-1:-1:-1;31658:10:105;;;;;31640:28;31636:93;;;31713:1;31688:5;:15;;;31704:5;31688:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;31636:93;31775:9;:26;;31788:13;31775:26;31771:92;;31821:27;31830:9;31841:1;31844:3;31821:8;:27::i;:::-;31944:26;31953:5;31960:3;31965:4;31944:8;:26::i;:::-;31937:33;;;;;;;;;;;;;25648:6339;;;;;;;:::o;3092:2427::-;3639:4;3633:11;;3555:4;3358:31;3347:43;;3418:13;3358:31;3757:2;3457:13;;3347:43;3364:24;3358:31;3457:13;;;3347:43;;;;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3418:13;4185:11;3364:24;3358:31;3457:13;;;3347:43;3418:13;4280:11;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3133:12;;4420:13;;3633:11;;3457:13;;;;4185:11;3133:12;4500:84;4525:2;4522:1;4519:9;4500:84;;;3374:13;3364:24;;3358:31;3347:43;;3378:2;3418:13;;;;4580:1;3457:13;;;;4543:1;4536:9;4500:84;;;4504:14;4647:1;4643:2;4636:13;4742:5;4738:2;4734:14;4727:5;4722:27;4763:500;;;4804:7;4837;4866:1;4861:309;;;;5246:1;5235:12;;4830:419;;4861:309;4897:9;4964:23;;;;5052:1;5047:23;;;;5149:1;5138:12;;4890:262;;4964:23;4984:1;4973:12;;4964:23;;5047;5067:1;5056:12;;4890:262;;4830:419;;4763:500;;;;:::o;:::-;5290:26;5307:8;5299:6;5290:26;:::i;:::-;5415:14;;;;5398:32;;;5458:19;5454:30;5490:3;5486:16;;;;5451:52;;;;;3092:2427;-1:-1:-1;;;;3092:2427:105:o;21703:1831::-;21776:11;21887:14;21904:24;21916:11;21904;:24::i;:::-;21887:41;;22036:1;22029:5;22025:13;22022:33;;;22051:1;22048;22041:12;22022:33;22184:2;22172:15;;;22125:20;22614:5;22611:1;22607:13;22649:4;22685:1;22670:343;22695:2;22692:1;22689:9;22670:343;;;22818:2;22806:15;;;22755:20;22853:12;;;22867:1;22849:20;22890:42;;;;22958:1;22953:42;;;;22842:153;;22890:42;22348:1;22341:12;;;22381:2;22374:13;;;22426:2;22413:16;;22899:31;;22890:42;;22953;22348:1;22341:12;;;22381:2;22374:13;;;22426:2;22413:16;;22962:31;;22842:153;-1:-1:-1;;22713:1:105;22706:9;22670:343;;;22674:14;23123:4;23117:11;23102:26;;23209:7;23203:4;23200:17;23190:124;;23251:10;23248:1;23241:21;23293:2;23290:1;23283:13;23190:124;-1:-1:-1;;23441:2:105;23430:14;;;;23418:10;23414:31;23411:1;23407:39;23475:16;;;;23493:10;23471:33;;21703:1831;-1:-1:-1;;;21703:1831:105:o;18813:823::-;18882:12;18969:18;;:::i;:::-;19037:4;19028:13;;19089:5;:8;;;19100:1;19089:12;19073:28;;:5;:12;;;:28;;;19069:95;;19121:28;;;;;2114:2:257;19121:28:105;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;19121:28:105;;;;;;;;19069:95;19253:8;;;;;19286:12;;;;;19275:23;;;;;;;19312:20;;;;;19253:8;19444:13;;;19440:90;;19505:6;19514:1;19505:10;19477:5;:15;;;19493:8;19477:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;19440:90;19606:13;:11;:13::i;:::-;19599:20;18813:823;-1:-1:-1;;;;;18813:823:105:o;2645:339::-;2706:11;2770:18;;;;2779:8;;;;2770:18;;;;;;2769:25;;;;;2786:1;2833:2;:9;;;2827:16;;;;;2826:22;;2825:32;;;;;;;2887:9;;2886:15;2769:25;2944:21;;2964:1;2944:21;;;2955:6;2944:21;2929:11;;;;;:37;;-1:-1:-1;;;2645:339:105;;;;:::o;13674:2026::-;13771:12;13857:18;;:::i;:::-;13925:4;13916:13;;13957:17;14017:5;:8;;;14028:1;14017:12;14001:28;;:5;:12;;;:28;;;13997:97;;14049:30;;;;;2461:2:257;14049:30:105;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;14049:30:105;2259:344:257;13997:97:105;14164:7;:12;;14175:1;14164:12;:28;;;;14180:7;:12;;14191:1;14180:12;14164:28;14160:947;;;14212:9;14224:5;:15;;;14240:6;14224:23;;;;;;;;;:::i;:::-;;;;;14212:35;;14288:2;14281:9;;:3;:9;;;:25;;;;;14294:7;:12;;14305:1;14294:12;14281:25;14280:58;;;;14319:2;14312:9;;:3;:9;;;;:25;;;;;14325:7;:12;;14336:1;14325:12;14312:25;14265:73;;14194:159;14160:947;;;14450:7;:12;;14461:1;14450:12;14446:661;;14511:1;14503:3;14497:15;;;;14482:30;;14446:661;;;14615:7;:12;;14626:1;14615:12;14611:496;;14675:1;14668:3;14662:14;;;14647:29;;14611:496;;;14796:7;:12;;14807:1;14796:12;14792:315;;14884:4;14878:2;14869:11;;;14868:20;14854:10;14911:8;;;14907:84;;14971:1;14964:3;14958:14;;;14943:29;;14907:84;15012:3;:8;;15019:1;15012:8;15008:85;;15073:1;15065:3;15059:15;;;;15044:30;;15008:85;14810:297;14792:315;15183:8;;;;;15261:12;;;;15250:23;;;;;15417:178;;;;15508:1;15482:22;15485:5;15493:6;15485:14;15501:2;15482;:22::i;:::-;:27;;;;;;;15468:42;;15477:1;15468:42;15453:57;:12;;;:57;15417:178;;;15564:12;;;;;15579:1;15564:16;15549:31;;;;15417:178;15670:13;:11;:13::i;:::-;15663:20;13674:2026;-1:-1:-1;;;;;;;;13674:2026:105:o;32033:8733::-;32120:10;32182;32190:2;32182:10;;;;32221:11;;;:44;;;32247:1;32237:6;:11;;;;:27;;;;;32261:3;32252:6;:12;;;32237:27;32217:8490;;;32306:4;32299:11;;32430:6;32490:3;32485:25;;;;32565:3;32560:25;;;;32639:3;32634:25;;;;32714:3;32709:25;;;;32788:3;32783:25;;;;32861:3;32856:25;;;;32935:3;32930:25;;;;32423:532;;32485:25;32504:4;32496:12;;32485:25;;32560;32579:4;32571:12;;32560:25;;32634;32653:4;32645:12;;32634:25;;32709;32728:4;32720:12;;32709:25;;32783;32802:4;32794:12;;32783:25;;32856;32875:4;32867:12;;32856:25;;32930;32949:4;32941:12;;32423:532;;33018:4;:12;;33026:4;33018:12;33014:4023;;-1:-1:-1;;;33069:9:105;33061:26;;33082:4;33077:1;33069:9;;;33068:18;33061:26;33054:33;;33014:4023;33155:4;:12;;33163:4;33155:12;33151:3886;;-1:-1:-1;;;33206:9:105;33198:26;;33219:4;33214:1;33206:9;;;33205:18;33198:26;33191:33;;33151:3886;33292:4;:12;;33300:4;33292:12;33288:3749;;33357:4;33352:1;33344:9;;;33343:18;33390:27;33344:9;33393:11;;;;33406:2;:10;;;33390:2;:27::i;:::-;33383:34;;;;;;;33288:3749;33486:4;:12;;33494:4;33486:12;33482:3555;;-1:-1:-1;;;33529:17:105;;;33541:4;33536:9;;33529:17;33522:24;;33482:3555;33615:4;:11;;33623:3;33615:11;33611:3426;;-1:-1:-1;;;33657:17:105;;;33669:4;33664:9;;33657:17;33650:24;;33611:3426;33743:4;:12;;33751:4;33743:12;33739:3298;;33786:21;33795:2;33789:8;;:2;:8;;;;33804:2;33799;:7;33786:2;:21::i;:::-;33779:28;;;;;;33739:3298;34056:4;:12;;34064:4;34056:12;34052:2985;;34099:2;34092:9;;;;;;34052:2985;34170:4;:12;;34178:4;34170:12;34166:2871;;34213:2;34206:9;;;;;;34166:2871;34284:4;:12;;34292:4;34284:12;34280:2757;;34327:2;34320:9;;;;;;34280:2757;34398:4;:12;;34406:4;34398:12;34394:2643;;34441:2;34434:9;;;;;;34394:2643;34515:4;:12;;34523:4;34515:12;34511:2526;;34558:2;34551:9;;;;;;34511:2526;34675:4;:12;;34683:4;34675:12;34671:2366;;34718:2;34711:9;;;;;;34671:2366;34789:4;:12;;34797:4;34789:12;34785:2252;;34832:2;34825:9;;;;;;34785:2252;34903:4;:12;;34911:4;34903:12;34899:2138;;34946:2;34939:9;;;;;;34899:2138;35017:4;:12;;35025:4;35017:12;35013:2024;;35060:2;35053:9;;;;;;35013:2024;35131:4;:12;;35139:4;35131:12;35127:1910;;35174:2;35167:9;;;;;;35127:1910;35245:4;:12;;35253:4;35245:12;35241:1796;;35288:2;35281:9;;;;;;35241:1796;35360:4;:12;;35368:4;35360:12;35356:1681;;35403:2;35396:9;;;;;;35356:1681;35473:4;:12;;35481:4;35473:12;35469:1568;;35516:2;35509:9;;;;;;35469:1568;35587:4;:12;;35595:4;35587:12;35583:1454;;35630:2;35623:9;;;;;;35583:1454;35779:4;:12;;35787:4;35779:12;35775:1262;;-1:-1:-1;;;35823:7:105;;;35815:16;;35775:1262;35900:4;:12;;35908:4;35900:12;35896:1141;;-1:-1:-1;;;35944:7:105;;;35936:16;;35896:1141;36020:4;:12;;36028:4;36020:12;36016:1021;;-1:-1:-1;;;36064:7:105;;;36056:16;;36016:1021;36141:4;:12;;36149:4;36141:12;36137:900;;-1:-1:-1;;;36185:7:105;;;36177:16;;36137:900;36261:4;:12;;36269:4;36261:12;36257:780;;-1:-1:-1;;;36305:7:105;;;36297:16;;36257:780;36380:4;:12;;36388:4;36380:12;36376:661;;-1:-1:-1;;;36424:7:105;;;36416:16;;36376:661;36500:4;:12;;36508:4;36500:12;36496:541;;-1:-1:-1;;;36544:7:105;;;36536:16;;36496:541;36620:4;:12;;36628:4;36620:12;36616:421;;-1:-1:-1;;;36665:7:105;;;36663:10;36656:17;;36616:421;36742:4;:12;;36750:4;36742:12;36738:299;;36803:2;36785:21;;36791:2;36785:21;;;:29;;36813:1;36785:29;;;36809:1;36785:29;36778:36;;;;;;;;36738:299;36884:4;:12;;36892:4;36884:12;36880:157;;36932:2;36927:7;;:2;:7;;;:15;;36941:1;36927:15;;36880:157;36989:29;;;;;2810:2:257;36989:29:105;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;36989:29:105;2608:343:257;36880:157:105;32267:4784;32217:8490;;;37107:6;:14;;37117:4;37107:14;37103:3590;;37166:4;37159:11;;37241:3;37233:11;;;37229:549;;-1:-1:-1;;;37286:21:105;;;37272:36;;37229:549;37393:4;:12;;37401:4;37393:12;:28;;;;37409:4;:12;;37417:4;37409:12;37393:28;37389:389;;;37453:4;:12;;37461:4;37453:12;37449:83;;37502:3;;;37449:83;37557:8;37595:127;37607:10;37602:15;;:20;37595:127;;37687:8;37654:3;37687:8;;;;;37654:3;37595:127;;;37754:1;-1:-1:-1;37747:8:105;;-1:-1:-1;;37747:8:105;37103:3590;37845:6;:14;;37855:4;37845:14;37841:2852;;-1:-1:-1;;37890:8:105;37896:2;37890:8;;;;37883:15;;37841:2852;37965:6;:14;;37975:4;37965:14;37961:2732;;38010:42;38028:2;38033:1;38028:6;38038:1;38027:12;38022:2;:17;38014:26;;:3;:26;;;;38044:4;38013:35;38050:1;38010:2;:42::i;37961:2732::-;38119:6;:14;;38129:4;38119:14;38115:2578;;38164:45;38182:2;38187:1;38182:6;38192:1;38181:12;38176:2;:17;38168:26;;:3;:26;;;;38198:6;38167:37;38206:2;38164;:45::i;38115:2578::-;38277:6;:14;;38287:4;38277:14;38273:2420;;-1:-1:-1;;38328:21:105;38347:1;38342;38337:6;;38336:12;38328:21;;38385:36;;;38456:5;38451:10;;38328:21;;;;;38450:18;38443:25;;38273:2420;38535:6;:14;;38545:4;38535:14;38531:2162;;38580:3;38573:10;;;;;38531:2162;38651:6;:14;;38661:4;38651:14;38647:2046;;38711:2;38716:1;38711:6;38721:1;38710:12;38705:2;:17;38697:26;;:3;:26;;;;38727:4;38696:35;38689:42;;;;;38647:2046;38800:6;:14;;38810:4;38800:14;38796:1897;;38860:2;38865:1;38860:6;38870:1;38859:12;38854:2;:17;38846:26;;:3;:26;;;;38876:6;38845:37;38838:44;;;;;38796:1897;38951:6;:14;;38961:4;38951:14;38947:1746;;-1:-1:-1;;39002:26:105;39026:1;39021;39016:6;;39015:12;39010:2;:17;39002:26;;39064:41;;;39140:5;39135:10;;39002:26;;;;;39134:18;39127:25;;38947:1746;39220:6;:14;;39230:4;39220:14;39216:1477;;-1:-1:-1;;39277:4:105;39271:34;39303:1;39298;39293:6;;39292:12;39287:2;:17;39271:34;;39361:27;;;39341:48;;;39419:10;;39272:9;;;39271:34;;39418:18;39411:25;;39216:1477;39504:6;:14;;39514:4;39504:14;39500:1193;;-1:-1:-1;;39561:6:105;39555:36;39589:1;39584;39579:6;;39578:12;39573:2;:17;39555:36;;39647:29;;;39627:50;;;39707:10;;39556:11;;;39555:36;;39706:18;39699:25;;39500:1193;39793:6;:14;;39803:4;39793:14;39789:904;;-1:-1:-1;;39844:20:105;39862:1;39857;39852:6;;39851:12;39844:20;;39900:36;;;39972:5;39966:11;;39844:20;;;;;39965:19;39958:26;;39789:904;40052:6;:14;;40062:4;40052:14;40048:645;;40097:2;40090:9;;;;;40048:645;40168:6;:14;;40178:4;40168:14;40164:529;;-1:-1:-1;;40219:25:105;40242:1;40237;40232:6;;40231:12;40226:2;:17;40219:25;;40280:41;;;40357:5;40351:11;;40219:25;;;;;40350:19;40343:26;;40164:529;40436:6;:14;;40446:4;40436:14;40432:261;;40481:3;40474:10;;;;;40432:261;40551:6;:14;;40561:4;40551:14;40547:146;;40596:2;40589:9;;;;;19917:782;20003:12;20090:18;;:::i;:::-;-1:-1:-1;20158:4:105;20265:2;20253:14;;;;20245:41;;;;;;;3158:2:257;20245:41:105;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;20245:41:105;2956:338:257;20245:41:105;20382:14;;;;;;;:30;;;20400:12;20382:30;20378:102;;;20461:4;20432:5;:15;;;20448:9;20432:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;20378:102;20535:12;;;;;20524:23;;;;:8;;;:23;20591:1;20576:16;;;20561:31;;;20669:13;:11;:13::i;5560:7728::-;5603:12;5689:18;;:::i;:::-;-1:-1:-1;5867:15:105;;:18;;;;5757:4;6027:18;;;;6071;;;;6115;;;;;5757:4;;5847:17;;;;6027:18;6071;6205;;;6219:4;6205:18;6201:6777;;6255:2;6284:4;6279:9;;:14;6275:144;;6395:4;6390:9;;6382:4;:18;6376:24;6275:144;6440:2;:7;;6446:1;6440:7;6436:161;;6476:10;;;;;6508:16;;;;;;;;6476:10;-1:-1:-1;6436:161:105;;;6576:2;6571:7;;6436:161;6225:386;6201:6777;;;6713:10;:18;;6727:4;6713:18;6709:6269;;1745:10;6751:14;;6709:6269;;;6849:10;:18;;6863:4;6849:18;6845:6133;;6892:1;6887:6;;6845:6133;;;7017:10;:18;;7031:4;7017:18;7013:5965;;7070:4;7055:12;;;:19;7092:26;;;:14;;;:26;7143:13;:11;:13::i;:::-;7136:20;;;;;;;;;5560:7728;:::o;7013:5965::-;7282:10;:18;;7296:4;7282:18;7278:5700;;7433:14;;;7429:2708;7278:5700;7429:2708;7603:22;;;;;7599:2538;;7728:10;7741:27;7749:2;7754:10;7749:15;7766:1;7741:7;:27::i;:::-;7852:17;;;;7728:40;;-1:-1:-1;7852:17:105;7830:19;8002:14;8021:1;7996:26;7992:131;;8064:36;8088:11;1277:21:106;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;8064:36:105;8050:50;;7992:131;8209:20;;;;;8176:54;;;;;;;;3472:25:257;;;8176:54:105;3533:23:257;;;3513:18;;;3506:51;8145:11:105;;;;8176:19;:6;:19;;;;3445:18:257;;8176:54:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8144:86;;;;8457:1;8453:2;8449:10;8554:9;8551:1;8547:17;8636:6;8629:5;8626:17;8623:40;;;8656:5;8646:15;;8623:40;;8739:6;8735:2;8732:14;8729:34;;;8759:2;8749:12;;8729:34;8865:3;8860:1;8852:6;8848:14;8843:3;8839:24;8835:34;8828:41;;8965:3;8961:1;8949:9;8940:6;8937:1;8933:14;8929:30;8925:38;8921:48;8914:55;;9120:1;9116;9112;9100:9;9097:1;9093:17;9089:25;9085:33;9081:41;9247:1;9243;9239;9230:6;9218:9;9215:1;9211:17;9207:30;9203:38;9199:46;9195:54;9177:72;;9378:10;9374:15;9368:4;9364:26;9356:34;;9494:3;9486:4;9482:9;9477:3;9473:19;9470:28;9463:35;;;;9640:33;9649:2;9654:10;9649:15;9666:1;9669:3;9640:8;:33::i;:::-;9695:20;;;:38;;;;;;;;;-1:-1:-1;7599:2538:105;;-1:-1:-1;;;7599:2538:105;;9852:18;;;;;9848:289;;10022:2;10017:7;;7278:5700;;9848:289;10076:10;10071:15;;2053:3;10108:10;;9848:289;7278:5700;;;10266:10;:18;;10280:4;10266:18;10262:2716;;10420:15;;;1824:1;10420:15;;:34;;-1:-1:-1;10439:15:105;;;1859:1;10439:15;10420:34;:57;;;-1:-1:-1;10458:19:105;;;1936:1;10458:19;10420:57;10416:1593;;;10506:2;10501:7;;10262:2716;;10416:1593;10632:23;;;;;10628:1381;;10679:10;10692:27;10700:2;10705:10;10700:15;10717:1;10692:7;:27::i;:::-;10795:17;;;;10679:40;;-1:-1:-1;11038:1:105;11030:10;;11132:1;11128:17;11207:13;;;11204:32;;;11229:5;11223:11;;11204:32;11515:14;;;11321:1;11511:22;;;11507:32;;;;11404:26;11428:1;11313:10;;;11408:18;;;11404:26;11503:43;11309:20;;11611:12;11739:17;;;:23;11807:1;11784:20;;;:24;11317:2;-1:-1:-1;11317:2:105;7278:5700;;10262:2716;12211:10;:18;;12225:4;12211:18;12207:771;;12321:2;:7;;12327:1;12321:7;12317:647;;12414:14;;;;;:40;;-1:-1:-1;12432:22:105;;;1978:1;12432:22;12414:40;:62;;;-1:-1:-1;12458:18:105;;;1897:1;12458:18;12414:62;12410:404;;;12509:1;12504:6;;12317:647;;12410:404;12555:15;;;1824:1;12555:15;;:34;;-1:-1:-1;12574:15:105;;;1859:1;12574:15;12555:34;:61;;;-1:-1:-1;12593:23:105;;;2021:1;12593:23;12555:61;:84;;;-1:-1:-1;12620:19:105;;;1936:1;12620:19;12555:84;12551:263;;;12672:1;12667:6;;7278:5700;;12317:647;12865:10;12860:15;;2087:4;12897:11;;12317:647;13053:15;;;;;:23;;;;:18;;;;:23;;;;13090:15;;:23;;;:18;;;;:23;-1:-1:-1;13179:12:105;;;;13168:23;;;:8;;;:23;13235:1;13220:16;13205:31;;;;;13258:13;:11;:13::i;16041:2480::-;16135:12;16221:18;;:::i;:::-;-1:-1:-1;16289:4:105;16321:10;16429:13;;;16438:4;16429:13;16425:1705;;-1:-1:-1;16468:8:105;;;;16425:1705;;;16587:5;:13;;16596:4;16587:13;16583:1547;;16620:14;;;:8;;;:14;16583:1547;;;16750:5;:13;;16759:4;16750:13;16746:1384;;-1:-1:-1;16789:8:105;;;;16746:1384;;;16908:5;:13;;16917:4;16908:13;16904:1226;;16941:14;;;:8;;;:14;16904:1226;;;17082:5;:13;;17091:4;17082:13;17078:1052;;17209:9;17155:17;17135;;;17155;;;;17135:37;17216:2;17209:9;;;;;17191:8;;;:28;17237:22;:8;;;:22;17078:1052;;;17396:5;:13;;17405:4;17396:13;17392:738;;17463:11;17449;;;17463;;;17449:25;17518:2;17511:9;;;;;17493:8;;;:28;17539:22;:8;;;:22;17392:738;;;17720:5;:13;;17729:4;17720:13;17716:414;;17790:3;17771:23;;17777:3;17771:23;;;;;;;:::i;:::-;;17753:42;;:8;;;:42;17831:23;;;;;;;;;;;;;:::i;:::-;;17813:42;;:8;;;:42;17716:414;;;18024:5;:13;;18033:4;18024:13;18020:110;;18074:3;18068:9;;:3;:9;;;;;;;:::i;:::-;;18057:20;;;;:8;;;:20;18106:9;;;;;;;;;;;:::i;:::-;;18095:20;;:8;;;:20;18020:110;18223:14;;;;18219:85;;18286:3;18257:5;:15;;;18273:9;18257:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;18219:85;18358:12;;;;;18347:23;;;;:8;;;:23;18414:1;18399:16;;;18384:31;;;18491:13;:11;:13::i;:::-;18484:20;16041:2480;-1:-1:-1;;;;;;;16041:2480:105:o;23870:1654::-;24046:14;24063:24;24075:11;24063;:24::i;:::-;24046:41;;24195:1;24188:5;24184:13;24181:33;;;24210:1;24207;24200:12;24181:33;24349:2;24543:15;;;24368:2;24357:14;;24345:10;24341:31;24338:1;24334:39;24499:16;;;24284:20;;24484:10;24473:22;;;24469:27;24459:38;24456:60;24985:5;24982:1;24978:13;25056:1;25041:343;25066:2;25063:1;25060:9;25041:343;;;25189:2;25177:15;;;25126:20;25224:12;;;25238:1;25220:20;25261:42;;;;25329:1;25324:42;;;;25213:153;;25261:42;22348:1;22341:12;;;22381:2;22374:13;;;22426:2;22413:16;;25270:31;;25261:42;;25324;22348:1;22341:12;;;22381:2;22374:13;;;22426:2;22413:16;;25333:31;;25213:153;-1:-1:-1;;25084:1:105;25077:9;25041:343;;;-1:-1:-1;;25483:4:105;25476:18;-1:-1:-1;;;;23870:1654:105:o;20903:586::-;21225:20;;;21249:7;21225:32;21218:3;:40;;;21331:14;;21386:17;;21380:24;;;21372:72;;;;;;;4209:2:257;21372:72:105;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;21372:72:105;4007:399:257;21372:72:105;21458:14;20903:586;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
var MIPSDeployedSourceMap = "1131:39544:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1710:45;;1745:10;1710:45;;;;;188:10:257;176:23;;;158:42;;146:2;131:18;1710:45:105;;;;;;;;2448:99;;;412:42:257;2534:6:105;400:55:257;382:74;;370:2;355:18;2448:99:105;211:251:257;25555:6339:105;;;;;;:::i;:::-;;:::i;:::-;;;1687:25:257;;;1675:2;1660:18;25555:6339:105;1541:177:257;25555:6339:105;25633:7;25676:18;;:::i;:::-;25823:4;25816:5;25813:15;25803:134;;25917:1;25914;25907:12;25803:134;25973:4;25967:11;25980;25964:28;25954:137;;26071:1;26068;26061:12;25954:137;26139:3;26121:16;26118:25;26108:150;;26238:1;26235;26228:12;26108:150;26302:3;26288:12;26285:21;26275:145;;26400:1;26397;26390:12;26275:145;26680:24;;27024:4;26726:20;27082:2;26784:21;;26680:24;26842:18;26726:20;26784:21;;;26680:24;26657:21;26653:52;;;26842:18;26726:20;;;26784:21;;;26680:24;26653:52;;26726:20;;26784:21;;;26680:24;26653:52;;26842:18;26726:20;26784:21;;;26680:24;26653:52;;26842:18;26726:20;26784:21;;;26680:24;26653:52;;26842:18;26726:20;26784:21;;;26680:24;26653:52;;;26842:18;26726:20;26784:21;;;26680:24;26657:21;26653:52;;;26842:18;26726:20;26784:21;;;26680:24;26653:52;;26842:18;26726:20;26784:21;;;26680:24;26653:52;;26842:18;26726:20;27700:10;26842:18;27690:21;;;26784;;;;27798:1;27783:77;27808:2;27805:1;27802:9;27783:77;;;26680:24;;26657:21;26653:52;26726:20;;27856:1;26784:21;;;;26668:2;26842:18;;;;27826:1;27819:9;27783:77;;;27787:14;;;27938:5;:12;;;27934:71;;;27977:13;:11;:13::i;:::-;27970:20;;;;;27934:71;28019:10;;;:15;;28033:1;28019:15;;;;;28104:8;;;;-1:-1:-1;;28096:20:105;;-1:-1:-1;28096:7:105;:20::i;:::-;28082:34;-1:-1:-1;28146:10:105;28154:2;28146:10;;;;28223:1;28213:11;;;:26;;;28228:6;:11;;28238:1;28228:11;28213:26;28209:310;;;28369:13;28438:1;28416:4;28423:10;28416:17;28415:24;;;;28386:5;:12;;;28401:10;28386:25;28385:54;28369:70;;28464:40;28475:6;:11;;28485:1;28475:11;:20;;28493:2;28475:20;;;28489:1;28475:20;28464:40;;28497:6;28464:10;:40::i;:::-;28457:47;;;;;;;;28209:310;28768:15;;;;28563:9;;;;28700:4;28694:2;28686:10;;;28685:19;;;28768:15;28793:2;28785:10;;;28784:19;28768:36;;;;;;;:::i;:::-;;;;;;-1:-1:-1;28833:5:105;28857:11;;;;;:29;;;28872:6;:14;;28882:4;28872:14;28857:29;28853:832;;;28949:5;:15;;;28965:5;28949:22;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;29012:4:105;29006:2;28998:10;;;28997:19;28853:832;;;29050:4;29041:6;:13;;;29037:648;;;29171:6;:13;;29181:3;29171:13;:30;;;;29188:6;:13;;29198:3;29188:13;29171:30;:47;;;;29205:6;:13;;29215:3;29205:13;29171:47;29167:253;;;29281:4;29288:6;29281:13;29276:18;;29037:648;;29167:253;29380:21;29383:4;29390:6;29383:13;29398:2;29380;:21::i;:::-;29375:26;;29037:648;;;29454:4;29444:6;:14;;;;:32;;;;29462:6;:14;;29472:4;29462:14;29444:32;:50;;;;29480:6;:14;;29490:4;29480:14;29444:50;29440:245;;;29564:5;:15;;;29580:5;29564:22;;;;;;;;;:::i;:::-;;;;;29559:27;;29665:5;29657:13;;29440:245;29714:1;29704:6;:11;;;;:25;;;;;29728:1;29719:6;:10;;;29704:25;29703:42;;;;29734:6;:11;;29744:1;29734:11;29703:42;29699:125;;;29772:37;29785:6;29793:4;29799:5;29806:2;29772:12;:37::i;:::-;29765:44;;;;;;;;;;;29699:125;29857:13;29838:16;30009:4;29999:14;;;;29995:446;;30078:21;30081:4;30088:6;30081:13;30096:2;30078;:21::i;:::-;30072:27;;;;30136:10;30131:15;;30170:16;30131:15;30184:1;30170:7;:16::i;:::-;30164:22;;30218:4;30208:6;:14;;;;:32;;;;;30226:6;:14;;30236:4;30226:14;;30208:32;30204:223;;;30305:4;30293:16;;30407:1;30399:9;;30204:223;30015:426;29995:446;30474:10;30487:26;30495:4;30501:2;30505;30509:3;30487:7;:26::i;:::-;30516:10;30487:39;;;;-1:-1:-1;30612:4:105;30605:11;;;30644;;;:24;;;;;30667:1;30659:4;:9;;;;30644:24;:39;;;;;30679:4;30672;:11;;;30644:39;30640:847;;;30707:4;:9;;30715:1;30707:9;:22;;;;30720:4;:9;;30728:1;30720:9;30707:22;30703:144;;;30791:37;30802:4;:9;;30810:1;30802:9;:21;;30818:5;30802:21;;;30814:1;30802:21;30825:2;30791:10;:37::i;:::-;30784:44;;;;;;;;;;;;;;;30703:144;30869:4;:11;;30877:3;30869:11;30865:121;;30939:28;30948:5;30955:2;30959:7;;;;30939:8;:28::i;30865:121::-;31007:4;:11;;31015:3;31007:11;31003:121;;31077:28;31086:5;31093:2;31097:7;;;;;31077:8;:28::i;31003:121::-;31194:4;:11;;31202:3;31194:11;31190:80;;31236:15;:13;:15::i;31190:80::-;31373:4;31365;:12;;;;:27;;;;;31388:4;31381;:11;;;31365:27;31361:112;;;31423:31;31434:4;31440:2;31444;31448:5;31423:10;:31::i;31361:112::-;31547:6;:14;;31557:4;31547:14;:28;;;;-1:-1:-1;31565:10:105;;;;;31547:28;31543:93;;;31620:1;31595:5;:15;;;31611:5;31595:22;;;;;;;;;:::i;:::-;:26;;;;:22;;;;;;:26;31543:93;31682:9;:26;;31695:13;31682:26;31678:92;;31728:27;31737:9;31748:1;31751:3;31728:8;:27::i;:::-;31851:26;31860:5;31867:3;31872:4;31851:8;:26::i;:::-;31844:33;;;;;;;;;;;;;25555:6339;;;;;;;:::o;3092:2334::-;3639:4;3633:11;;3555:4;3358:31;3347:43;;3418:13;3358:31;3757:2;3457:13;;3347:43;3364:24;3358:31;3457:13;;;3347:43;;;;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3418:13;4185:11;3364:24;3358:31;3457:13;;;3347:43;3418:13;4280:11;3364:24;3358:31;3457:13;;;3347:43;3364:24;3358:31;3457:13;;;3347:43;3133:12;;4420:13;;3633:11;;3457:13;;;;4185:11;3133:12;4500:84;4525:2;4522:1;4519:9;4500:84;;;3374:13;3364:24;;3358:31;3347:43;;3378:2;3418:13;;;;4580:1;3457:13;;;;4543:1;4536:9;4500:84;;;4504:14;4647:1;4643:2;4636:13;4742:5;4738:2;4734:14;4727:5;4722:27;4816:1;4802:15;;4837:6;4861:1;4856:273;;;;5196:1;5186:11;;4830:369;;4856:273;4888:8;4946:22;;;;5025:1;5020:22;;;;5112:1;5102:11;;4881:234;;4946:22;4965:1;4955:11;;4946:22;;5020;5039:1;5029:11;;4881:234;;4830:369;-1:-1:-1;;;5322:14:105;;;5305:32;;5365:19;5361:30;5397:3;5393:16;;;;5358:52;;3092:2334;-1:-1:-1;3092:2334:105:o;21610:1831::-;21683:11;21794:14;21811:24;21823:11;21811;:24::i;:::-;21794:41;;21943:1;21936:5;21932:13;21929:33;;;21958:1;21955;21948:12;21929:33;22091:2;22079:15;;;22032:20;22521:5;22518:1;22514:13;22556:4;22592:1;22577:343;22602:2;22599:1;22596:9;22577:343;;;22725:2;22713:15;;;22662:20;22760:12;;;22774:1;22756:20;22797:42;;;;22865:1;22860:42;;;;22749:153;;22797:42;22255:1;22248:12;;;22288:2;22281:13;;;22333:2;22320:16;;22806:31;;22797:42;;22860;22255:1;22248:12;;;22288:2;22281:13;;;22333:2;22320:16;;22869:31;;22749:153;-1:-1:-1;;22620:1:105;22613:9;22577:343;;;22581:14;23030:4;23024:11;23009:26;;23116:7;23110:4;23107:17;23097:124;;23158:10;23155:1;23148:21;23200:2;23197:1;23190:13;23097:124;-1:-1:-1;;23348:2:105;23337:14;;;;23325:10;23321:31;23318:1;23314:39;23382:16;;;;23400:10;23378:33;;21610:1831;-1:-1:-1;;;21610:1831:105:o;18720:823::-;18789:12;18876:18;;:::i;:::-;18944:4;18935:13;;18996:5;:8;;;19007:1;18996:12;18980:28;;:5;:12;;;:28;;;18976:95;;19028:28;;;;;2114:2:257;19028:28:105;;;2096:21:257;2153:2;2133:18;;;2126:30;2192:20;2172:18;;;2165:48;2230:18;;19028:28:105;;;;;;;;18976:95;19160:8;;;;;19193:12;;;;;19182:23;;;;;;;19219:20;;;;;19160:8;19351:13;;;19347:90;;19412:6;19421:1;19412:10;19384:5;:15;;;19400:8;19384:25;;;;;;;;;:::i;:::-;:38;;;;:25;;;;;;:38;19347:90;19513:13;:11;:13::i;:::-;19506:20;18720:823;-1:-1:-1;;;;;18720:823:105:o;2645:339::-;2706:11;2770:18;;;;2779:8;;;;2770:18;;;;;;2769:25;;;;;2786:1;2833:2;:9;;;2827:16;;;;;2826:22;;2825:32;;;;;;;2887:9;;2886:15;2769:25;2944:21;;2964:1;2944:21;;;2955:6;2944:21;2929:11;;;;;:37;;-1:-1:-1;;;2645:339:105;;;;:::o;13581:2026::-;13678:12;13764:18;;:::i;:::-;13832:4;13823:13;;13864:17;13924:5;:8;;;13935:1;13924:12;13908:28;;:5;:12;;;:28;;;13904:97;;13956:30;;;;;2461:2:257;13956:30:105;;;2443:21:257;2500:2;2480:18;;;2473:30;2539:22;2519:18;;;2512:50;2579:18;;13956:30:105;2259:344:257;13904:97:105;14071:7;:12;;14082:1;14071:12;:28;;;;14087:7;:12;;14098:1;14087:12;14071:28;14067:947;;;14119:9;14131:5;:15;;;14147:6;14131:23;;;;;;;;;:::i;:::-;;;;;14119:35;;14195:2;14188:9;;:3;:9;;;:25;;;;;14201:7;:12;;14212:1;14201:12;14188:25;14187:58;;;;14226:2;14219:9;;:3;:9;;;;:25;;;;;14232:7;:12;;14243:1;14232:12;14219:25;14172:73;;14101:159;14067:947;;;14357:7;:12;;14368:1;14357:12;14353:661;;14418:1;14410:3;14404:15;;;;14389:30;;14353:661;;;14522:7;:12;;14533:1;14522:12;14518:496;;14582:1;14575:3;14569:14;;;14554:29;;14518:496;;;14703:7;:12;;14714:1;14703:12;14699:315;;14791:4;14785:2;14776:11;;;14775:20;14761:10;14818:8;;;14814:84;;14878:1;14871:3;14865:14;;;14850:29;;14814:84;14919:3;:8;;14926:1;14919:8;14915:85;;14980:1;14972:3;14966:15;;;;14951:30;;14915:85;14717:297;14699:315;15090:8;;;;;15168:12;;;;15157:23;;;;;15324:178;;;;15415:1;15389:22;15392:5;15400:6;15392:14;15408:2;15389;:22::i;:::-;:27;;;;;;;15375:42;;15384:1;15375:42;15360:57;:12;;;:57;15324:178;;;15471:12;;;;;15486:1;15471:16;15456:31;;;;15324:178;15577:13;:11;:13::i;:::-;15570:20;13581:2026;-1:-1:-1;;;;;;;;13581:2026:105:o;31940:8733::-;32027:10;32089;32097:2;32089:10;;;;32128:11;;;:44;;;32154:1;32144:6;:11;;;;:27;;;;;32168:3;32159:6;:12;;;32144:27;32124:8490;;;32213:4;32206:11;;32337:6;32397:3;32392:25;;;;32472:3;32467:25;;;;32546:3;32541:25;;;;32621:3;32616:25;;;;32695:3;32690:25;;;;32768:3;32763:25;;;;32842:3;32837:25;;;;32330:532;;32392:25;32411:4;32403:12;;32392:25;;32467;32486:4;32478:12;;32467:25;;32541;32560:4;32552:12;;32541:25;;32616;32635:4;32627:12;;32616:25;;32690;32709:4;32701:12;;32690:25;;32763;32782:4;32774:12;;32763:25;;32837;32856:4;32848:12;;32330:532;;32925:4;:12;;32933:4;32925:12;32921:4023;;-1:-1:-1;;;32976:9:105;32968:26;;32989:4;32984:1;32976:9;;;32975:18;32968:26;32961:33;;32921:4023;33062:4;:12;;33070:4;33062:12;33058:3886;;-1:-1:-1;;;33113:9:105;33105:26;;33126:4;33121:1;33113:9;;;33112:18;33105:26;33098:33;;33058:3886;33199:4;:12;;33207:4;33199:12;33195:3749;;33264:4;33259:1;33251:9;;;33250:18;33297:27;33251:9;33300:11;;;;33313:2;:10;;;33297:2;:27::i;:::-;33290:34;;;;;;;33195:3749;33393:4;:12;;33401:4;33393:12;33389:3555;;-1:-1:-1;;;33436:17:105;;;33448:4;33443:9;;33436:17;33429:24;;33389:3555;33522:4;:11;;33530:3;33522:11;33518:3426;;-1:-1:-1;;;33564:17:105;;;33576:4;33571:9;;33564:17;33557:24;;33518:3426;33650:4;:12;;33658:4;33650:12;33646:3298;;33693:21;33702:2;33696:8;;:2;:8;;;;33711:2;33706;:7;33693:2;:21::i;:::-;33686:28;;;;;;33646:3298;33963:4;:12;;33971:4;33963:12;33959:2985;;34006:2;33999:9;;;;;;33959:2985;34077:4;:12;;34085:4;34077:12;34073:2871;;34120:2;34113:9;;;;;;34073:2871;34191:4;:12;;34199:4;34191:12;34187:2757;;34234:2;34227:9;;;;;;34187:2757;34305:4;:12;;34313:4;34305:12;34301:2643;;34348:2;34341:9;;;;;;34301:2643;34422:4;:12;;34430:4;34422:12;34418:2526;;34465:2;34458:9;;;;;;34418:2526;34582:4;:12;;34590:4;34582:12;34578:2366;;34625:2;34618:9;;;;;;34578:2366;34696:4;:12;;34704:4;34696:12;34692:2252;;34739:2;34732:9;;;;;;34692:2252;34810:4;:12;;34818:4;34810:12;34806:2138;;34853:2;34846:9;;;;;;34806:2138;34924:4;:12;;34932:4;34924:12;34920:2024;;34967:2;34960:9;;;;;;34920:2024;35038:4;:12;;35046:4;35038:12;35034:1910;;35081:2;35074:9;;;;;;35034:1910;35152:4;:12;;35160:4;35152:12;35148:1796;;35195:2;35188:9;;;;;;35148:1796;35267:4;:12;;35275:4;35267:12;35263:1681;;35310:2;35303:9;;;;;;35263:1681;35380:4;:12;;35388:4;35380:12;35376:1568;;35423:2;35416:9;;;;;;35376:1568;35494:4;:12;;35502:4;35494:12;35490:1454;;35537:2;35530:9;;;;;;35490:1454;35686:4;:12;;35694:4;35686:12;35682:1262;;-1:-1:-1;;;35730:7:105;;;35722:16;;35682:1262;35807:4;:12;;35815:4;35807:12;35803:1141;;-1:-1:-1;;;35851:7:105;;;35843:16;;35803:1141;35927:4;:12;;35935:4;35927:12;35923:1021;;-1:-1:-1;;;35971:7:105;;;35963:16;;35923:1021;36048:4;:12;;36056:4;36048:12;36044:900;;-1:-1:-1;;;36092:7:105;;;36084:16;;36044:900;36168:4;:12;;36176:4;36168:12;36164:780;;-1:-1:-1;;;36212:7:105;;;36204:16;;36164:780;36287:4;:12;;36295:4;36287:12;36283:661;;-1:-1:-1;;;36331:7:105;;;36323:16;;36283:661;36407:4;:12;;36415:4;36407:12;36403:541;;-1:-1:-1;;;36451:7:105;;;36443:16;;36403:541;36527:4;:12;;36535:4;36527:12;36523:421;;-1:-1:-1;;;36572:7:105;;;36570:10;36563:17;;36523:421;36649:4;:12;;36657:4;36649:12;36645:299;;36710:2;36692:21;;36698:2;36692:21;;;:29;;36720:1;36692:29;;;36716:1;36692:29;36685:36;;;;;;;;36645:299;36791:4;:12;;36799:4;36791:12;36787:157;;36839:2;36834:7;;:2;:7;;;:15;;36848:1;36834:15;;36787:157;36896:29;;;;;2810:2:257;36896:29:105;;;2792:21:257;2849:2;2829:18;;;2822:30;2888:21;2868:18;;;2861:49;2927:18;;36896:29:105;2608:343:257;36787:157:105;32174:4784;32124:8490;;;37014:6;:14;;37024:4;37014:14;37010:3590;;37073:4;37066:11;;37148:3;37140:11;;;37136:549;;-1:-1:-1;;;37193:21:105;;;37179:36;;37136:549;37300:4;:12;;37308:4;37300:12;:28;;;;37316:4;:12;;37324:4;37316:12;37300:28;37296:389;;;37360:4;:12;;37368:4;37360:12;37356:83;;37409:3;;;37356:83;37464:8;37502:127;37514:10;37509:15;;:20;37502:127;;37594:8;37561:3;37594:8;;;;;37561:3;37502:127;;;37661:1;-1:-1:-1;37654:8:105;;-1:-1:-1;;37654:8:105;37010:3590;37752:6;:14;;37762:4;37752:14;37748:2852;;-1:-1:-1;;37797:8:105;37803:2;37797:8;;;;37790:15;;37748:2852;37872:6;:14;;37882:4;37872:14;37868:2732;;37917:42;37935:2;37940:1;37935:6;37945:1;37934:12;37929:2;:17;37921:26;;:3;:26;;;;37951:4;37920:35;37957:1;37917:2;:42::i;37868:2732::-;38026:6;:14;;38036:4;38026:14;38022:2578;;38071:45;38089:2;38094:1;38089:6;38099:1;38088:12;38083:2;:17;38075:26;;:3;:26;;;;38105:6;38074:37;38113:2;38071;:45::i;38022:2578::-;38184:6;:14;;38194:4;38184:14;38180:2420;;-1:-1:-1;;38235:21:105;38254:1;38249;38244:6;;38243:12;38235:21;;38292:36;;;38363:5;38358:10;;38235:21;;;;;38357:18;38350:25;;38180:2420;38442:6;:14;;38452:4;38442:14;38438:2162;;38487:3;38480:10;;;;;38438:2162;38558:6;:14;;38568:4;38558:14;38554:2046;;38618:2;38623:1;38618:6;38628:1;38617:12;38612:2;:17;38604:26;;:3;:26;;;;38634:4;38603:35;38596:42;;;;;38554:2046;38707:6;:14;;38717:4;38707:14;38703:1897;;38767:2;38772:1;38767:6;38777:1;38766:12;38761:2;:17;38753:26;;:3;:26;;;;38783:6;38752:37;38745:44;;;;;38703:1897;38858:6;:14;;38868:4;38858:14;38854:1746;;-1:-1:-1;;38909:26:105;38933:1;38928;38923:6;;38922:12;38917:2;:17;38909:26;;38971:41;;;39047:5;39042:10;;38909:26;;;;;39041:18;39034:25;;38854:1746;39127:6;:14;;39137:4;39127:14;39123:1477;;-1:-1:-1;;39184:4:105;39178:34;39210:1;39205;39200:6;;39199:12;39194:2;:17;39178:34;;39268:27;;;39248:48;;;39326:10;;39179:9;;;39178:34;;39325:18;39318:25;;39123:1477;39411:6;:14;;39421:4;39411:14;39407:1193;;-1:-1:-1;;39468:6:105;39462:36;39496:1;39491;39486:6;;39485:12;39480:2;:17;39462:36;;39554:29;;;39534:50;;;39614:10;;39463:11;;;39462:36;;39613:18;39606:25;;39407:1193;39700:6;:14;;39710:4;39700:14;39696:904;;-1:-1:-1;;39751:20:105;39769:1;39764;39759:6;;39758:12;39751:20;;39807:36;;;39879:5;39873:11;;39751:20;;;;;39872:19;39865:26;;39696:904;39959:6;:14;;39969:4;39959:14;39955:645;;40004:2;39997:9;;;;;39955:645;40075:6;:14;;40085:4;40075:14;40071:529;;-1:-1:-1;;40126:25:105;40149:1;40144;40139:6;;40138:12;40133:2;:17;40126:25;;40187:41;;;40264:5;40258:11;;40126:25;;;;;40257:19;40250:26;;40071:529;40343:6;:14;;40353:4;40343:14;40339:261;;40388:3;40381:10;;;;;40339:261;40458:6;:14;;40468:4;40458:14;40454:146;;40503:2;40496:9;;;;;19824:782;19910:12;19997:18;;:::i;:::-;-1:-1:-1;20065:4:105;20172:2;20160:14;;;;20152:41;;;;;;;3158:2:257;20152:41:105;;;3140:21:257;3197:2;3177:18;;;3170:30;3236:16;3216:18;;;3209:44;3270:18;;20152:41:105;2956:338:257;20152:41:105;20289:14;;;;;;;:30;;;20307:12;20289:30;20285:102;;;20368:4;20339:5;:15;;;20355:9;20339:26;;;;;;;;;:::i;:::-;:33;;;;:26;;;;;;:33;20285:102;20442:12;;;;;20431:23;;;;:8;;;:23;20498:1;20483:16;;;20468:31;;;20576:13;:11;:13::i;5467:7728::-;5510:12;5596:18;;:::i;:::-;-1:-1:-1;5774:15:105;;:18;;;;5664:4;5934:18;;;;5978;;;;6022;;;;;5664:4;;5754:17;;;;5934:18;5978;6112;;;6126:4;6112:18;6108:6777;;6162:2;6191:4;6186:9;;:14;6182:144;;6302:4;6297:9;;6289:4;:18;6283:24;6182:144;6347:2;:7;;6353:1;6347:7;6343:161;;6383:10;;;;;6415:16;;;;;;;;6383:10;-1:-1:-1;6343:161:105;;;6483:2;6478:7;;6343:161;6132:386;6108:6777;;;6620:10;:18;;6634:4;6620:18;6616:6269;;1745:10;6658:14;;6616:6269;;;6756:10;:18;;6770:4;6756:18;6752:6133;;6799:1;6794:6;;6752:6133;;;6924:10;:18;;6938:4;6924:18;6920:5965;;6977:4;6962:12;;;:19;6999:26;;;:14;;;:26;7050:13;:11;:13::i;:::-;7043:20;;;;;;;;;5467:7728;:::o;6920:5965::-;7189:10;:18;;7203:4;7189:18;7185:5700;;7340:14;;;7336:2708;7185:5700;7336:2708;7510:22;;;;;7506:2538;;7635:10;7648:27;7656:2;7661:10;7656:15;7673:1;7648:7;:27::i;:::-;7759:17;;;;7635:40;;-1:-1:-1;7759:17:105;7737:19;7909:14;7928:1;7903:26;7899:131;;7971:36;7995:11;1277:21:106;1426:15;;;1467:8;1461:4;1454:22;1595:4;1582:18;;1602:19;1578:44;1624:11;1575:61;;1222:430;7971:36:105;7957:50;;7899:131;8116:20;;;;;8083:54;;;;;;;;3472:25:257;;;8083:54:105;3533:23:257;;;3513:18;;;3506:51;8052:11:105;;;;8083:19;:6;:19;;;;3445:18:257;;8083:54:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8051:86;;;;8364:1;8360:2;8356:10;8461:9;8458:1;8454:17;8543:6;8536:5;8533:17;8530:40;;;8563:5;8553:15;;8530:40;;8646:6;8642:2;8639:14;8636:34;;;8666:2;8656:12;;8636:34;8772:3;8767:1;8759:6;8755:14;8750:3;8746:24;8742:34;8735:41;;8872:3;8868:1;8856:9;8847:6;8844:1;8840:14;8836:30;8832:38;8828:48;8821:55;;9027:1;9023;9019;9007:9;9004:1;9000:17;8996:25;8992:33;8988:41;9154:1;9150;9146;9137:6;9125:9;9122:1;9118:17;9114:30;9110:38;9106:46;9102:54;9084:72;;9285:10;9281:15;9275:4;9271:26;9263:34;;9401:3;9393:4;9389:9;9384:3;9380:19;9377:28;9370:35;;;;9547:33;9556:2;9561:10;9556:15;9573:1;9576:3;9547:8;:33::i;:::-;9602:20;;;:38;;;;;;;;;-1:-1:-1;7506:2538:105;;-1:-1:-1;;;7506:2538:105;;9759:18;;;;;9755:289;;9929:2;9924:7;;7185:5700;;9755:289;9983:10;9978:15;;2053:3;10015:10;;9755:289;7185:5700;;;10173:10;:18;;10187:4;10173:18;10169:2716;;10327:15;;;1824:1;10327:15;;:34;;-1:-1:-1;10346:15:105;;;1859:1;10346:15;10327:34;:57;;;-1:-1:-1;10365:19:105;;;1936:1;10365:19;10327:57;10323:1593;;;10413:2;10408:7;;10169:2716;;10323:1593;10539:23;;;;;10535:1381;;10586:10;10599:27;10607:2;10612:10;10607:15;10624:1;10599:7;:27::i;:::-;10702:17;;;;10586:40;;-1:-1:-1;10945:1:105;10937:10;;11039:1;11035:17;11114:13;;;11111:32;;;11136:5;11130:11;;11111:32;11422:14;;;11228:1;11418:22;;;11414:32;;;;11311:26;11335:1;11220:10;;;11315:18;;;11311:26;11410:43;11216:20;;11518:12;11646:17;;;:23;11714:1;11691:20;;;:24;11224:2;-1:-1:-1;11224:2:105;7185:5700;;10169:2716;12118:10;:18;;12132:4;12118:18;12114:771;;12228:2;:7;;12234:1;12228:7;12224:647;;12321:14;;;;;:40;;-1:-1:-1;12339:22:105;;;1978:1;12339:22;12321:40;:62;;;-1:-1:-1;12365:18:105;;;1897:1;12365:18;12321:62;12317:404;;;12416:1;12411:6;;12224:647;;12317:404;12462:15;;;1824:1;12462:15;;:34;;-1:-1:-1;12481:15:105;;;1859:1;12481:15;12462:34;:61;;;-1:-1:-1;12500:23:105;;;2021:1;12500:23;12462:61;:84;;;-1:-1:-1;12527:19:105;;;1936:1;12527:19;12462:84;12458:263;;;12579:1;12574:6;;7185:5700;;12224:647;12772:10;12767:15;;2087:4;12804:11;;12224:647;12960:15;;;;;:23;;;;:18;;;;:23;;;;12997:15;;:23;;;:18;;;;:23;-1:-1:-1;13086:12:105;;;;13075:23;;;:8;;;:23;13142:1;13127:16;13112:31;;;;;13165:13;:11;:13::i;15948:2480::-;16042:12;16128:18;;:::i;:::-;-1:-1:-1;16196:4:105;16228:10;16336:13;;;16345:4;16336:13;16332:1705;;-1:-1:-1;16375:8:105;;;;16332:1705;;;16494:5;:13;;16503:4;16494:13;16490:1547;;16527:14;;;:8;;;:14;16490:1547;;;16657:5;:13;;16666:4;16657:13;16653:1384;;-1:-1:-1;16696:8:105;;;;16653:1384;;;16815:5;:13;;16824:4;16815:13;16811:1226;;16848:14;;;:8;;;:14;16811:1226;;;16989:5;:13;;16998:4;16989:13;16985:1052;;17116:9;17062:17;17042;;;17062;;;;17042:37;17123:2;17116:9;;;;;17098:8;;;:28;17144:22;:8;;;:22;16985:1052;;;17303:5;:13;;17312:4;17303:13;17299:738;;17370:11;17356;;;17370;;;17356:25;17425:2;17418:9;;;;;17400:8;;;:28;17446:22;:8;;;:22;17299:738;;;17627:5;:13;;17636:4;17627:13;17623:414;;17697:3;17678:23;;17684:3;17678:23;;;;;;;:::i;:::-;;17660:42;;:8;;;:42;17738:23;;;;;;;;;;;;;:::i;:::-;;17720:42;;:8;;;:42;17623:414;;;17931:5;:13;;17940:4;17931:13;17927:110;;17981:3;17975:9;;:3;:9;;;;;;;:::i;:::-;;17964:20;;;;:8;;;:20;18013:9;;;;;;;;;;;:::i;:::-;;18002:20;;:8;;;:20;17927:110;18130:14;;;;18126:85;;18193:3;18164:5;:15;;;18180:9;18164:26;;;;;;;;;:::i;:::-;:32;;;;:26;;;;;;:32;18126:85;18265:12;;;;;18254:23;;;;:8;;;:23;18321:1;18306:16;;;18291:31;;;18398:13;:11;:13::i;:::-;18391:20;15948:2480;-1:-1:-1;;;;;;;15948:2480:105:o;23777:1654::-;23953:14;23970:24;23982:11;23970;:24::i;:::-;23953:41;;24102:1;24095:5;24091:13;24088:33;;;24117:1;24114;24107:12;24088:33;24256:2;24450:15;;;24275:2;24264:14;;24252:10;24248:31;24245:1;24241:39;24406:16;;;24191:20;;24391:10;24380:22;;;24376:27;24366:38;24363:60;24892:5;24889:1;24885:13;24963:1;24948:343;24973:2;24970:1;24967:9;24948:343;;;25096:2;25084:15;;;25033:20;25131:12;;;25145:1;25127:20;25168:42;;;;25236:1;25231:42;;;;25120:153;;25168:42;22255:1;22248:12;;;22288:2;22281:13;;;22333:2;22320:16;;25177:31;;25168:42;;25231;22255:1;22248:12;;;22288:2;22281:13;;;22333:2;22320:16;;25240:31;;25120:153;-1:-1:-1;;24991:1:105;24984:9;24948:343;;;-1:-1:-1;;25390:4:105;25383:18;-1:-1:-1;;;;23777:1654:105:o;20810:586::-;21132:20;;;21156:7;21132:32;21125:3;:40;;;21238:14;;21293:17;;21287:24;;;21279:72;;;;;;;4209:2:257;21279:72:105;;;4191:21:257;4248:2;4228:18;;;4221:30;4287:34;4267:18;;;4260:62;4358:5;4338:18;;;4331:33;4381:19;;21279:72:105;4007:399:257;21279:72:105;21365:14;20810:586;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;467:347:257:-;518:8;528:6;582:3;575:4;567:6;563:17;559:27;549:55;;600:1;597;590:12;549:55;-1:-1:-1;623:20:257;;666:18;655:30;;652:50;;;698:1;695;688:12;652:50;735:4;727:6;723:17;711:29;;787:3;780:4;771:6;763;759:19;755:30;752:39;749:59;;;804:1;801;794:12;749:59;467:347;;;;;:::o;819:717::-;909:6;917;925;933;986:2;974:9;965:7;961:23;957:32;954:52;;;1002:1;999;992:12;954:52;1042:9;1029:23;1071:18;1112:2;1104:6;1101:14;1098:34;;;1128:1;1125;1118:12;1098:34;1167:58;1217:7;1208:6;1197:9;1193:22;1167:58;:::i;:::-;1244:8;;-1:-1:-1;1141:84:257;-1:-1:-1;1332:2:257;1317:18;;1304:32;;-1:-1:-1;1348:16:257;;;1345:36;;;1377:1;1374;1367:12;1345:36;;1416:60;1468:7;1457:8;1446:9;1442:24;1416:60;:::i;:::-;819:717;;;;-1:-1:-1;1495:8:257;-1:-1:-1;;;;819:717:257:o;1723:184::-;1775:77;1772:1;1765:88;1872:4;1869:1;1862:15;1896:4;1893:1;1886:15;3568:245;3647:6;3655;3708:2;3696:9;3687:7;3683:23;3679:32;3676:52;;;3724:1;3721;3714:12;3676:52;-1:-1:-1;;3747:16:257;;3803:2;3788:18;;;3782:25;3747:16;;3782:25;;-1:-1:-1;3568:245:257:o;3818:184::-;3870:77;3867:1;3860:88;3967:4;3964:1;3957:15;3991:4;3988:1;3981:15"
func init() {
if err := json.Unmarshal([]byte(MIPSStorageLayoutJSON), MIPSStorageLayout); err != nil {
......
......@@ -5,6 +5,7 @@ import (
"context"
"fmt"
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
"github.com/ethereum-optimism/optimism/op-bindings/bindings"
"github.com/ethereum-optimism/optimism/op-challenger/config"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/responder"
......@@ -169,12 +170,13 @@ func ValidateAbsolutePrestate(ctx context.Context, trace types.TraceProvider, lo
return fmt.Errorf("failed to get the trace provider's absolute prestate: %w", err)
}
providerPrestateHash := crypto.Keccak256(providerPrestate)
providerPrestateHash[0] = mipsevm.VMStatusUnfinished
onchainPrestate, err := loader.FetchAbsolutePrestateHash(ctx)
if err != nil {
return fmt.Errorf("failed to get the onchain absolute prestate: %w", err)
}
if !bytes.Equal(providerPrestateHash, onchainPrestate[:]) {
return fmt.Errorf("trace provider's absolute prestate does not match onchain absolute prestate")
return fmt.Errorf("trace provider's absolute prestate does not match onchain absolute prestate: Provider: %s | Chain %s", common.Bytes2Hex(providerPrestateHash), onchainPrestate.Hex())
}
return nil
}
......@@ -6,6 +6,7 @@ import (
"fmt"
"testing"
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum-optimism/optimism/op-node/testlog"
"github.com/ethereum/go-ethereum/common"
......@@ -119,6 +120,7 @@ func TestValidateAbsolutePrestate(t *testing.T) {
t.Run("ValidPrestates", func(t *testing.T) {
prestate := []byte{0x00, 0x01, 0x02, 0x03}
prestateHash := crypto.Keccak256(prestate)
prestateHash[0] = mipsevm.VMStatusUnfinished
mockTraceProvider := newMockTraceProvider(false, prestate)
mockLoader := newMockPrestateLoader(false, common.BytesToHash(prestateHash))
err := ValidateAbsolutePrestate(context.Background(), mockTraceProvider, mockLoader)
......
......@@ -6,6 +6,7 @@ import (
"math/big"
"strings"
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
"github.com/ethereum-optimism/optimism/op-challenger/game/fault/types"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/crypto"
......@@ -78,7 +79,7 @@ func BuildAlphabetPreimage(i uint64, letter string) []byte {
func alphabetStateHash(state []byte) common.Hash {
h := crypto.Keccak256Hash(state)
// In the alphabet game, we ignore the VM status code and always set it to 1.
h[0] = 1
h[0] = mipsevm.VMStatusInvalid
return h
}
......
......@@ -110,13 +110,6 @@ type TraceProvider interface {
StateHash(ctx context.Context, state []byte) (common.Hash, error)
}
const (
VMStatusValid = 0
VMStatusInvalid = 1
VMStatusPanic = 2
VMStatusUnfinished = 3
)
// ClaimData is the core of a claim. It must be unique inside a specific game.
type ClaimData struct {
Value common.Hash
......
......@@ -298,81 +298,81 @@ LegacyERC20ETH_Test:test_transferFrom_doesNotExist_reverts() (gas: 12957)
LegacyERC20ETH_Test:test_transfer_doesNotExist_reverts() (gas: 10755)
LegacyMessagePasser_Test:test_passMessageToL1_succeeds() (gas: 34524)
LibPosition_Test:test_pos_correctness_succeeds() (gas: 38689)
MIPS_Test:test_add_succeeds() (gas: 122488)
MIPS_Test:test_addiSign_succeeds() (gas: 122479)
MIPS_Test:test_addi_succeeds() (gas: 122676)
MIPS_Test:test_addu_succeeds() (gas: 122530)
MIPS_Test:test_addui_succeeds() (gas: 122738)
MIPS_Test:test_and_succeeds() (gas: 122549)
MIPS_Test:test_andi_succeeds() (gas: 122482)
MIPS_Test:test_beq_succeeds() (gas: 202937)
MIPS_Test:test_bgez_succeeds() (gas: 121775)
MIPS_Test:test_bgtz_succeeds() (gas: 121696)
MIPS_Test:test_blez_succeeds() (gas: 121652)
MIPS_Test:test_bltz_succeeds() (gas: 121795)
MIPS_Test:test_bne_succeeds() (gas: 121861)
MIPS_Test:test_add_succeeds() (gas: 122424)
MIPS_Test:test_addiSign_succeeds() (gas: 122415)
MIPS_Test:test_addi_succeeds() (gas: 122612)
MIPS_Test:test_addu_succeeds() (gas: 122466)
MIPS_Test:test_addui_succeeds() (gas: 122674)
MIPS_Test:test_and_succeeds() (gas: 122485)
MIPS_Test:test_andi_succeeds() (gas: 122418)
MIPS_Test:test_beq_succeeds() (gas: 202809)
MIPS_Test:test_bgez_succeeds() (gas: 121711)
MIPS_Test:test_bgtz_succeeds() (gas: 121632)
MIPS_Test:test_blez_succeeds() (gas: 121588)
MIPS_Test:test_bltz_succeeds() (gas: 121731)
MIPS_Test:test_bne_succeeds() (gas: 121797)
MIPS_Test:test_branch_inDelaySlot_fails() (gas: 85999)
MIPS_Test:test_brk_succeeds() (gas: 122160)
MIPS_Test:test_clo_succeeds() (gas: 122217)
MIPS_Test:test_clone_succeeds() (gas: 122113)
MIPS_Test:test_clz_succeeds() (gas: 122688)
MIPS_Test:test_div_succeeds() (gas: 122667)
MIPS_Test:test_divu_succeeds() (gas: 122652)
MIPS_Test:test_exit_succeeds() (gas: 122160)
MIPS_Test:test_fcntl_succeeds() (gas: 204409)
MIPS_Test:test_brk_succeeds() (gas: 122096)
MIPS_Test:test_clo_succeeds() (gas: 122153)
MIPS_Test:test_clone_succeeds() (gas: 122049)
MIPS_Test:test_clz_succeeds() (gas: 122624)
MIPS_Test:test_div_succeeds() (gas: 122603)
MIPS_Test:test_divu_succeeds() (gas: 122588)
MIPS_Test:test_exit_succeeds() (gas: 122096)
MIPS_Test:test_fcntl_succeeds() (gas: 204281)
MIPS_Test:test_illegal_instruction_fails() (gas: 91462)
MIPS_Test:test_invalid_root_fails() (gas: 435636)
MIPS_Test:test_jal_nonzeroRegion_succeeds() (gas: 120805)
MIPS_Test:test_jal_succeeds() (gas: 120794)
MIPS_Test:test_jalr_succeeds() (gas: 121913)
MIPS_Test:test_jr_succeeds() (gas: 121607)
MIPS_Test:test_jal_nonzeroRegion_succeeds() (gas: 120741)
MIPS_Test:test_jal_succeeds() (gas: 120730)
MIPS_Test:test_jalr_succeeds() (gas: 121849)
MIPS_Test:test_jr_succeeds() (gas: 121543)
MIPS_Test:test_jump_inDelaySlot_fails() (gas: 85367)
MIPS_Test:test_jump_nonzeroRegion_succeeds() (gas: 120549)
MIPS_Test:test_jump_succeeds() (gas: 120479)
MIPS_Test:test_lb_succeeds() (gas: 127720)
MIPS_Test:test_lbu_succeeds() (gas: 127618)
MIPS_Test:test_lh_succeeds() (gas: 127741)
MIPS_Test:test_lhu_succeeds() (gas: 127658)
MIPS_Test:test_ll_succeeds() (gas: 127880)
MIPS_Test:test_lui_succeeds() (gas: 121761)
MIPS_Test:test_lw_succeeds() (gas: 127509)
MIPS_Test:test_lwl_succeeds() (gas: 242182)
MIPS_Test:test_lwr_succeeds() (gas: 242470)
MIPS_Test:test_mfhi_succeeds() (gas: 122122)
MIPS_Test:test_mflo_succeeds() (gas: 122251)
MIPS_Test:test_mmap_succeeds() (gas: 119080)
MIPS_Test:test_movn_succeeds() (gas: 203609)
MIPS_Test:test_movz_succeeds() (gas: 203477)
MIPS_Test:test_mthi_succeeds() (gas: 122166)
MIPS_Test:test_mtlo_succeeds() (gas: 122274)
MIPS_Test:test_mul_succeeds() (gas: 121766)
MIPS_Test:test_mult_succeeds() (gas: 122470)
MIPS_Test:test_multu_succeeds() (gas: 122507)
MIPS_Test:test_nor_succeeds() (gas: 122599)
MIPS_Test:test_or_succeeds() (gas: 122556)
MIPS_Test:test_ori_succeeds() (gas: 122559)
MIPS_Test:test_preimage_read_succeeds() (gas: 234476)
MIPS_Test:test_preimage_write_succeeds() (gas: 127102)
MIPS_Test:test_prestate_exited_succeeds() (gas: 113346)
MIPS_Test:test_sb_succeeds() (gas: 160591)
MIPS_Test:test_sc_succeeds() (gas: 160785)
MIPS_Test:test_sh_succeeds() (gas: 160628)
MIPS_Test:test_sll_succeeds() (gas: 121727)
MIPS_Test:test_sllv_succeeds() (gas: 121956)
MIPS_Test:test_slt_succeeds() (gas: 204804)
MIPS_Test:test_sltu_succeeds() (gas: 122773)
MIPS_Test:test_sra_succeeds() (gas: 121978)
MIPS_Test:test_srav_succeeds() (gas: 122246)
MIPS_Test:test_srl_succeeds() (gas: 121809)
MIPS_Test:test_srlv_succeeds() (gas: 121974)
MIPS_Test:test_step_abi_succeeds() (gas: 58481)
MIPS_Test:test_sub_succeeds() (gas: 122583)
MIPS_Test:test_subu_succeeds() (gas: 122580)
MIPS_Test:test_sw_succeeds() (gas: 160603)
MIPS_Test:test_swl_succeeds() (gas: 160664)
MIPS_Test:test_swr_succeeds() (gas: 160739)
MIPS_Test:test_xor_succeeds() (gas: 122584)
MIPS_Test:test_xori_succeeds() (gas: 122636)
MIPS_Test:test_jump_nonzeroRegion_succeeds() (gas: 120485)
MIPS_Test:test_jump_succeeds() (gas: 120415)
MIPS_Test:test_lb_succeeds() (gas: 127656)
MIPS_Test:test_lbu_succeeds() (gas: 127554)
MIPS_Test:test_lh_succeeds() (gas: 127677)
MIPS_Test:test_lhu_succeeds() (gas: 127594)
MIPS_Test:test_ll_succeeds() (gas: 127816)
MIPS_Test:test_lui_succeeds() (gas: 121697)
MIPS_Test:test_lw_succeeds() (gas: 127445)
MIPS_Test:test_lwl_succeeds() (gas: 242054)
MIPS_Test:test_lwr_succeeds() (gas: 242342)
MIPS_Test:test_mfhi_succeeds() (gas: 122058)
MIPS_Test:test_mflo_succeeds() (gas: 122187)
MIPS_Test:test_mmap_succeeds() (gas: 119016)
MIPS_Test:test_movn_succeeds() (gas: 203481)
MIPS_Test:test_movz_succeeds() (gas: 203349)
MIPS_Test:test_mthi_succeeds() (gas: 122102)
MIPS_Test:test_mtlo_succeeds() (gas: 122210)
MIPS_Test:test_mul_succeeds() (gas: 121702)
MIPS_Test:test_mult_succeeds() (gas: 122406)
MIPS_Test:test_multu_succeeds() (gas: 122443)
MIPS_Test:test_nor_succeeds() (gas: 122535)
MIPS_Test:test_or_succeeds() (gas: 122492)
MIPS_Test:test_ori_succeeds() (gas: 122495)
MIPS_Test:test_preimage_read_succeeds() (gas: 234412)
MIPS_Test:test_preimage_write_succeeds() (gas: 127038)
MIPS_Test:test_prestate_exited_succeeds() (gas: 113282)
MIPS_Test:test_sb_succeeds() (gas: 160527)
MIPS_Test:test_sc_succeeds() (gas: 160721)
MIPS_Test:test_sh_succeeds() (gas: 160564)
MIPS_Test:test_sll_succeeds() (gas: 121663)
MIPS_Test:test_sllv_succeeds() (gas: 121892)
MIPS_Test:test_slt_succeeds() (gas: 204676)
MIPS_Test:test_sltu_succeeds() (gas: 122709)
MIPS_Test:test_sra_succeeds() (gas: 121914)
MIPS_Test:test_srav_succeeds() (gas: 122182)
MIPS_Test:test_srl_succeeds() (gas: 121745)
MIPS_Test:test_srlv_succeeds() (gas: 121910)
MIPS_Test:test_step_abi_succeeds() (gas: 58417)
MIPS_Test:test_sub_succeeds() (gas: 122519)
MIPS_Test:test_subu_succeeds() (gas: 122516)
MIPS_Test:test_sw_succeeds() (gas: 160539)
MIPS_Test:test_swl_succeeds() (gas: 160600)
MIPS_Test:test_swr_succeeds() (gas: 160675)
MIPS_Test:test_xor_succeeds() (gas: 122520)
MIPS_Test:test_xori_succeeds() (gas: 122572)
MerkleTrie_get_Test:test_get_corruptedProof_reverts() (gas: 5733)
MerkleTrie_get_Test:test_get_extraProofElements_reverts() (gas: 58889)
MerkleTrie_get_Test:test_get_invalidDataRemainder_reverts() (gas: 35845)
......
......@@ -16,7 +16,7 @@
"src/L2/L2StandardBridge.sol": "0xe025dcccbf21d48828ecf588941c9ba04c91b87bdd177a653d3f1b265b0b02a8",
"src/L2/L2ToL1MessagePasser.sol": "0xda56ba2e5b2c28fa8ca2df24077d49e96155a00ecc99cd0778d681be6ed166fe",
"src/L2/SequencerFeeVault.sol": "0x37816035c992d38cf7e3d5a1846b02d017dd7bdca46abe6e5c5171b9ee6225ab",
"src/dispute/FaultDisputeGame.sol": "0x1ee46e383f6017c8a381c54ff26958659d54995c97144879586a0d827f4a82c8",
"src/dispute/FaultDisputeGame.sol": "0xf990d243b117e7ba7e765e1aee433adcd01cf20dcc7088065691b09ae204ae47",
"src/legacy/DeployerWhitelist.sol": "0xf2129ec3da75307ba8e21bc943c332bb04704642e6e263149b5c8ee92dbcb7a8",
"src/legacy/L1BlockNumber.sol": "0x30aae1fc85103476af0226b6e98c71c01feebbdc35d93401390b1ad438a37be6",
"src/legacy/LegacyMessagePasser.sol": "0x5c08b0a663cc49d30e4e38540f6aefab19ef287c3ecd31c8d8c3decd5f5bd497",
......
......@@ -119,23 +119,22 @@ contract MIPS {
// Log the resulting MIPS state, for debugging
log0(start, sub(to, start))
function vmStatus(_exited, _exitCode) -> status_ {
switch _exited
case 1 {
switch _exitCode
// VMStatusValid
case 0 { status_ := 0 }
// VMStatusInvalid
case 1 { status_ := 1 }
// VMStatusPanic
default { status_ := 2 }
}
// VMStatusUnfinished
default { status_ := 3 }
// Determine the VM status
let status := 0
switch exited
case 1 {
switch exitCode
// VMStatusValid
case 0 { status := 0 }
// VMStatusInvalid
case 1 { status := 1 }
// VMStatusPanic
default { status := 2 }
}
let status := vmStatus(exited, exitCode)
// VMStatusUnfinished
default { status := 3 }
// Compute the hash of the resulting MIPS state
// Compute the hash of the resulting MIPS state and set the status byte
out_ := keccak256(start, sub(to, start))
out_ := or(and(not(shl(248, 0xFF)), out_), shl(248, status))
}
......
......@@ -85,7 +85,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
/// @param _blockOracle The block oracle, used for loading block hashes further back
/// than the `BLOCKHASH` opcode allows as well as their estimated
/// timestamps.
/// @custom:semver 0.0.8
/// @custom:semver 0.0.9
constructor(
GameType _gameType,
Claim _absolutePrestate,
......@@ -95,7 +95,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
L2OutputOracle _l2oo,
BlockOracle _blockOracle
)
Semver(0, 0, 8)
Semver(0, 0, 9)
{
GAME_TYPE = _gameType;
ABSOLUTE_PRESTATE = _absolutePrestate;
......@@ -150,7 +150,7 @@ contract FaultDisputeGame is IFaultDisputeGame, Clone, Semver {
// INVARIANT: The prestate is always invalid if the passed `_stateData` is not the
// preimage of the prestate claim hash.
// We ignore the highest order byte of the digest because it is used to
// indicate the VM Status.
// indicate the VM Status and is added after the digest is computed.
if (cleanHighByte(keccak256(_stateData)) != cleanHighByte(Claim.unwrap(preStateClaim))) {
revert InvalidPrestate();
}
......
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