Commit 1940dfb6 authored by Mark Tyneway's avatar Mark Tyneway

ctb: fix interface

parent 11b679f1
...@@ -49,7 +49,7 @@ type TypesWithdrawalTransaction struct { ...@@ -49,7 +49,7 @@ type TypesWithdrawalTransaction struct {
// OptimismPortalMetaData contains all meta data concerning the OptimismPortal contract. // OptimismPortalMetaData contains all meta data concerning the OptimismPortal contract.
var OptimismPortalMetaData = &bind.MetaData{ var OptimismPortalMetaData = &bind.MetaData{
ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"opaqueData\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"WithdrawalProven\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GUARDIAN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONFIG\",\"outputs\":[{\"internalType\":\"contractSystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"donateETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"contractSystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Oracle\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_byteCount\",\"type\":\"uint64\"}],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"structTypes.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\"}],\"name\":\"proveWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"provenWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2OutputIndex\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contractSystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"opaqueData\",\"type\":\"bytes\"}],\"name\":\"TransactionDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"WithdrawalFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"WithdrawalProven\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"GUARDIAN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"L2_ORACLE\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONFIG\",\"outputs\":[{\"internalType\":\"contractSystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"_gasLimit\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isCreation\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"depositTransaction\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"donateETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"}],\"name\":\"finalizeWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"finalizedWithdrawals\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"_l2Oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_guardian\",\"type\":\"address\"},{\"internalType\":\"contractSystemConfig\",\"name\":\"_systemConfig\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"}],\"name\":\"isOutputFinalized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Oracle\",\"outputs\":[{\"internalType\":\"contractL2OutputOracle\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l2Sender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_byteCount\",\"type\":\"uint64\"}],\"name\":\"minimumGasLimit\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"params\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"prevBaseFee\",\"type\":\"uint128\"},{\"internalType\":\"uint64\",\"name\":\"prevBoughtGas\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"prevBlockNum\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"structTypes.WithdrawalTransaction\",\"name\":\"_tx\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"_l2OutputIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"version\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"messagePasserStorageRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"latestBlockhash\",\"type\":\"bytes32\"}],\"internalType\":\"structTypes.OutputRootProof\",\"name\":\"_outputRootProof\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"_withdrawalProof\",\"type\":\"bytes[]\"}],\"name\":\"proveWithdrawalTransaction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"provenWithdrawals\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"outputRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint128\",\"name\":\"timestamp\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"l2OutputIndex\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"systemConfig\",\"outputs\":[{\"internalType\":\"contractSystemConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]",
Bin: "0x60e06040523480156200001157600080fd5b5060016080819052600860a052600060c08190526200003491819081906200003a565b62000236565b600054600290610100900460ff161580156200005d575060005460ff8083169116105b620000c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100908117909155603280546001600160a01b031990811661dead1790915560358054603680546001600160a01b0389811691861691909117909155603780548a831695169490941790935585151592891690930260ff19166001600160a81b0319909316929092171790556200014b62000193565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600054610100900460ff16620002005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000bd565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b60805160a05160c0516155fe620002666000396000610f3f01526000610f1601526000610eed01526155fe6000f3fe60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e9e05c4211610059578063e9e05c42146104de578063f0498750146101ef578063fecf9734146104f157600080fd5b8063a35d99df14610378578063cff0ab96146103b1578063e965084c1461045257600080fd5b80639b5f694a116100b05780639b5f694a146101995780639bf62d821461031b578063a14238e71461034857600080fd5b80638b4c40b0146101925780638c3152e9146102fb57600080fd5b806354fd4d50116101225780636dbffb78116101075780636dbffb78146102c6578063724c184c1461022f5780638456cb59146102e657600080fd5b806354fd4d501461027a5780635c975abb1461029c57600080fd5b80633f4ba83a116101535780633f4ba83a1461021a578063452a93201461022f5780634870496f1461025a57600080fd5b80621c2ff61461019957806333d7e2bd146101ef57600080fd5b36610194576101923334620186a0600060405180602001604052806000815250610511565b005b600080fd5b3480156101a557600080fd5b50603554610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101fb57600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561022657600080fd5b506101926107ac565b34801561023b57600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561026657600080fd5b50610192610275366004614b6a565b6108b1565b34801561028657600080fd5b5061028f610ee6565b6040516101e69190614cc0565b3480156102a857600080fd5b506035546102b69060ff1681565b60405190151581526020016101e6565b3480156102d257600080fd5b506102b66102e1366004614cd3565b610f89565b3480156102f257600080fd5b50610192611048565b34801561030757600080fd5b50610192610316366004614cec565b61114a565b34801561032757600080fd5b506032546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561035457600080fd5b506102b6610363366004614cd3565b60336020526000908152604090205460ff1681565b34801561038457600080fd5b50610398610393366004614d3e565b611a0e565b60405167ffffffffffffffff90911681526020016101e6565b3480156103bd57600080fd5b50600154610419906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101e6565b34801561045e57600080fd5b506104b061046d366004614cd3565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101e6565b6101926104ec366004614d69565b610511565b3480156104fd57600080fd5b5061019261050c366004614de4565b611a27565b8260005a905083156105c85773ffffffffffffffffffffffffffffffffffffffff8716156105c857604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6105d28351611a0e565b67ffffffffffffffff168567ffffffffffffffff161015610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b6201d4c0835111156106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016105bf565b33328114610704575033731111000000000000000000000000000000001111015b6000348888888860405160200161071f959493929190614e3e565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161078f9190614cc0565b60405180910390a450506107a38282611c35565b50505050505050565b60375473ffffffffffffffffffffffffffffffffffffffff163314610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e7061757365000000000000000000000000000000000000000000000060648201526084016105bf565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff161561091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016105bf565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016105bf565b6035546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101869052600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190614ec3565b519050610a90610a8b36869003860186614f28565b611f62565b8114610b1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016105bf565b6000610b2987611fbe565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610c435750805160355460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614ec3565b5114155b610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e00000000000000000060648201526084016105bf565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610d989101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610d8e888a614f8e565b8a60400135611fee565b610e24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016105bf565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6060610f117f0000000000000000000000000000000000000000000000000000000000000000612012565b610f3a7f0000000000000000000000000000000000000000000000000000000000000000612012565b610f637f0000000000000000000000000000000000000000000000000000000000000000612012565b604051602001610f7593929190615012565b604051602081830303815290604052905090565b6035546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000916110429161010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015611003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110279190614ec3565b602001516fffffffffffffffffffffffffffffffff1661214f565b92915050565b60375473ffffffffffffffffffffffffffffffffffffffff1633146110ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e2070617573650000000000000000000000000000000000000000000000000060648201526084016105bf565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016108a7565b60355460ff16156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016105bf565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016105bf565b600061126b82611fbe565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff80821694830185905270010000000000000000000000000000000090910416918101919091529293509003611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016105bf565b603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e79190615088565b81602001516fffffffffffffffffffffffffffffffff1610156114b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a4016105bf565b6114d181602001516fffffffffffffffffffffffffffffffff1661214f565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a4016105bf565b60355460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9091166004820152600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190614ec3565b82518151919250146116ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a4016105bf565b61170c81602001516fffffffffffffffffffffffffffffffff1661214f565b6117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a4016105bf565b60008381526033602052604090205460ff161561185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016105bf565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516118ff939291906121f4565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061196490841515815260200190565b60405180910390a28015801561197a5750326001145b15611a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b5050505050565b6000611a1b8260106150d0565b61104290615208615100565b600054600290610100900460ff16158015611a49575060005460ff8083169116105b611ad5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105bf565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100908117909155603280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811661dead17909155603580546036805473ffffffffffffffffffffffffffffffffffffffff89811691861691909117909155603780548a83169516949094179093558515159289169093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217179055611bd0612252565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600154600090611c6b907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361512c565b90506000611c77612335565b90506000816020015160ff16826000015163ffffffff16611c989190615172565b90508215611dcf57600154600090611ccf908390700100000000000000000000000000000000900467ffffffffffffffff166151da565b90506000836040015160ff1683611ce6919061524e565b600154611d069084906fffffffffffffffffffffffffffffffff1661524e565b611d109190615172565b600154909150600090611d6190611d3a9084906fffffffffffffffffffffffffffffffff1661530a565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166123fb565b90506001861115611d9057611d8d611d3a82876040015160ff1660018a611d88919061512c565b61241a565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e02908490700100000000000000000000000000000000900467ffffffffffffffff16615100565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016105bf565b600154600090611f11906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661537e565b90506000611f2348633b9aca0061246f565b611f2d90836153bb565b905060005a611f3c908861512c565b905080821115611f5857611f58611f53828461512c565b612486565b5050505050505050565b60008160000151826020015183604001518460600151604051602001611fa1949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611fa19790969591016153cf565b600080611ffa866124b4565b9050612008818686866124e6565b9695505050505050565b60608160000361205557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561207f578061206981615426565b91506120789050600a836153bb565b9150612059565b60008167ffffffffffffffff81111561209a5761209a61498a565b6040519080825280601f01601f1916602001820160405280156120c4576020820181803683370190505b5090505b8415612147576120d960018361512c565b91506120e6600a8661545e565b6120f1906030615472565b60f81b8183815181106121065761210661548a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612140600a866153bb565b94506120c8565b949350505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e29190615088565b6121ec9083615472565b421192915050565b6000806000612204866000612516565b90508061223a576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166122e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105bf565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260365483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156123d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f691906154de565b905090565b600061241061240a8585612534565b83612544565b90505b9392505050565b6000670de0b6b3a764000061245b6124328583615172565b61244490670de0b6b3a76400006151da565b61245685670de0b6b3a764000061524e565b612553565b612465908661524e565b6124109190615172565b60008183101561247f5781612413565b5090919050565b6000805a90505b825a612499908361512c565b10156124af576124a882615426565b915061248d565b505050565b606081805190602001206040516020016124d091815260200190565b6040516020818303038152906040529050919050565b600061250d846124f7878686612584565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561247f5781612413565b600081831261247f5781612413565b6000612413670de0b6b3a76400008361256b86613002565b612575919061524e565b61257f9190615172565b613246565b606060008451116125f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016105bf565b60006125fc84613485565b9050600061260986613571565b905060008460405160200161262091815260200190565b60405160208183030381529060405290506000805b8451811015612f795760008582815181106126525761265261548a565b6020026020010151905084518311156126ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016105bf565b826000036127a6578051805160209182012060405161273b9261271592910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016105bf565b6128fd565b80515160201161285c57805180516020918201206040516127d09261271592910190815260200190565b6127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016105bf565b8051845160208087019190912082519190920120146128fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016105bf565b61290960106001615472565b81602001515103612ae55784518303612a7d5761294381602001516010815181106129365761293661548a565b60200260200101516135d4565b965060008751116129d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016105bf565b600186516129e4919061512c565b8214612a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016105bf565b505050505050612413565b6000858481518110612a9157612a9161548a565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612abc57612abc61548a565b60200260200101519050612acf81613734565b9550612adc600186615472565b94505050612f66565b600281602001515103612ede576000612afd82613759565b9050600081600081518110612b1457612b1461548a565b016020015160f81c90506000612b2b60028361557d565b612b3690600261559f565b90506000612b47848360ff1661377d565b90506000612b558a8961377d565b90506000612b6383836137b3565b905080835114612bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016105bf565b60ff851660021480612c0a575060ff85166003145b15612df95780825114612c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016105bf565b612cb987602001516001815181106129365761293661548a565b9c5060008d5111612d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016105bf565b60018c51612d5a919061512c565b8814612de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016105bf565b505050505050505050505050612413565b60ff85161580612e0c575060ff85166001145b15612e4b57612e388760200151600181518110612e2b57612e2b61548a565b6020026020010151613734565b9950612e44818a615472565b9850612ed3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016105bf565b505050505050612f66565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016105bf565b5080612f7181615426565b915050612635565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016105bf565b600080821361306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016105bf565b6000606061307a84613867565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361327757506000919050565b680755bf798b4a1bf1e582126132e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016105bf565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156134a3576134a361498a565b6040519080825280602002602001820160405280156134e857816020015b60408051808201909152606080825260208201528152602001906001900390816134c15790505b50915060005b8181101561356a5760405180604001604052808583815181106135135761351361548a565b602002602001015181526020016135428684815181106135355761353561548a565b602002602001015161393d565b8152508382815181106135575761355761548a565b60209081029190910101526001016134ee565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156135c9578060011b82018184015160001a8060041c8253600f81166001830153505060010161359b565b509295945050505050565b606060008060006135e485613950565b9194509250905060008160018111156135ff576135ff6155c2565b1461368c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016105bf565b6136968284615472565b855114613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016105bf565b61250d856020015184846143bd565b606060208260000151106137505761374b826135d4565b611042565b61104282614451565b606061104261377883602001516000815181106129365761293661548a565b613571565b60608251821061379c5750604080516020810190915260008152611042565b61241383838486516137ae919061512c565b614467565b60008082518451106137c65782516137c9565b83515b90505b808210801561385057508282815181106137e8576137e861548a565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106138275761382761548a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613860578160010191506137cc565b5092915050565b60008082116138d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016105bf565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061104261394b8361463f565b614728565b600080600080846000015111613a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016105bf565b6020840151805160001a607f8111613a335760006001600094509450945050506143b6565b60b78111613c41576000613a4860808361512c565b905080876000015111613b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016105bf565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613b7c57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016105bf565b50600195509350600092506143b6915050565b60bf8111613f8f576000613c5660b78361512c565b905080876000015111613d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016105bf565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016105bf565b600184015160088302610100031c60378111613eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016105bf565b613ebd8184615472565b895111613f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016105bf565b613f7d836001615472565b97509550600094506143b69350505050565b60f78111614070576000613fa460c08361512c565b90508087600001511161405f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016105bf565b6001955093508492506143b6915050565b600061407d60f78361512c565b905080876000015111614138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016105bf565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016105bf565b600184015160088302610100031c603781116142da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016105bf565b6142e48184615472565b895111614399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016105bf565b6143a4836001615472565b97509550600194506143b69350505050565b9193909250565b60608167ffffffffffffffff8111156143d8576143d861498a565b6040519080825280601f01601f191660200182016040528015614402576020820181803683370190505b50905081156124135760006144178486615472565b90506020820160005b84811015614438578281015182820152602001614420565b84811115614447576000858301525b5050509392505050565b60606110428260200151600084600001516143bd565b60608182601f0110156144d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016105bf565b828284011015614542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016105bf565b818301845110156145af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016105bf565b6060821580156145ce5760405191506000825260208201604052614636565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156146075780518352602092830192016145ef565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6040805180820190915260008082526020820152600082511161470a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016105bf565b50604080518082019091528151815260209182019181019190915290565b6060600080600061473885613950565b919450925090506001816001811115614753576147536155c2565b146147e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016105bf565b84516147ec8385615472565b14614879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016105bf565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816148905790505093506000835b865181101561497e576000806149036040518060400160405280858c600001516148e7919061512c565b8152602001858c602001516148fc9190615472565b9052613950565b50915091506040518060400160405280838361491f9190615472565b8152602001848b602001516149349190615472565b8152508885815181106149495761494961548a565b602090810291909101015261495f600185615472565b935061496b8183615472565b6149759084615472565b925050506148bd565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a0057614a0061498a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614a2a57600080fd5b50565b600082601f830112614a3e57600080fd5b813567ffffffffffffffff811115614a5857614a5861498a565b614a8960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016149b9565b818152846020838601011115614a9e57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614acd57600080fd5b60405160c0810167ffffffffffffffff8282108183111715614af157614af161498a565b816040528293508435835260208501359150614b0c82614a08565b81602084015260408501359150614b2282614a08565b816040840152606085013560608401526080850135608084015260a0850135915080821115614b5057600080fd5b50614b5d85828601614a2d565b60a0830152505092915050565b600080600080600085870360e0811215614b8357600080fd5b863567ffffffffffffffff80821115614b9b57600080fd5b614ba78a838b01614abb565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614be057600080fd5b60408901955060c0890135925080831115614bfa57600080fd5b828901925089601f840112614c0e57600080fd5b8235915080821115614c1f57600080fd5b508860208260051b8401011115614c3557600080fd5b959894975092955050506020019190565b60005b83811015614c61578181015183820152602001614c49565b83811115614c70576000848401525b50505050565b60008151808452614c8e816020860160208601614c46565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124136020830184614c76565b600060208284031215614ce557600080fd5b5035919050565b600060208284031215614cfe57600080fd5b813567ffffffffffffffff811115614d1557600080fd5b61214784828501614abb565b803567ffffffffffffffff81168114614d3957600080fd5b919050565b600060208284031215614d5057600080fd5b61241382614d21565b80358015158114614d3957600080fd5b600080600080600060a08688031215614d8157600080fd5b8535614d8c81614a08565b945060208601359350614da160408701614d21565b9250614daf60608701614d59565b9150608086013567ffffffffffffffff811115614dcb57600080fd5b614dd788828901614a2d565b9150509295509295909350565b60008060008060808587031215614dfa57600080fd5b8435614e0581614a08565b93506020850135614e1581614a08565b92506040850135614e2581614a08565b9150614e3360608601614d59565b905092959194509250565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614e92816049850160208701614c46565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114614d3957600080fd5b600060608284031215614ed557600080fd5b6040516060810181811067ffffffffffffffff82111715614ef857614ef861498a565b60405282518152614f0b60208401614ea3565b6020820152614f1c60408401614ea3565b60408201529392505050565b600060808284031215614f3a57600080fd5b6040516080810181811067ffffffffffffffff82111715614f5d57614f5d61498a565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614fa957614fa961498a565b8360051b6020614fba8183016149b9565b868152918501918181019036841115614fd257600080fd5b865b8481101561500657803586811115614fec5760008081fd5b614ff836828b01614a2d565b845250918301918301614fd4565b50979650505050505050565b60008451615024818460208901614c46565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551615060816001850160208a01614c46565b6001920191820152835161507b816002840160208801614c46565b0160020195945050505050565b60006020828403121561509a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516818304811182151516156150f7576150f76150a1565b02949350505050565b600067ffffffffffffffff808316818516808303821115615123576151236150a1565b01949350505050565b60008282101561513e5761513e6150a1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261518157615181615143565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156151d5576151d56150a1565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615615214576152146150a1565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615615248576152486150a1565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561528f5761528f6150a1565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156152ca576152ca6150a1565b600087129250878205871284841616156152e6576152e66150a1565b878505871281841616156152fc576152fc6150a1565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615344576153446150a1565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615615378576153786150a1565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b6576153b66150a1565b500290565b6000826153ca576153ca615143565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261541a60c0830184614c76565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615457576154576150a1565b5060010190565b60008261546d5761546d615143565b500690565b60008219821115615485576154856150a1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805163ffffffff81168114614d3957600080fd5b805160ff81168114614d3957600080fd5b600060c082840312156154f057600080fd5b60405160c0810181811067ffffffffffffffff821117156155135761551361498a565b60405261551f836154b9565b815261552d602084016154cd565b602082015261553e604084016154cd565b604082015261554f606084016154b9565b6060820152615560608084016154b9565b608082015261557160a08401614ea3565b60a08201529392505050565b600060ff83168061559057615590615143565b8060ff84160691505092915050565b600060ff821660ff8416808210156155b9576155b96150a1565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a", Bin: "0x60e06040523480156200001157600080fd5b5060016080819052600860a052600060c08190526200003491819081906200003a565b62000236565b600054600290610100900460ff161580156200005d575060005460ff8083169116105b620000c65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805461ffff191660ff831617610100908117909155603280546001600160a01b031990811661dead1790915560358054603680546001600160a01b0389811691861691909117909155603780548a831695169490941790935585151592891690930260ff19166001600160a81b0319909316929092171790556200014b62000193565b6000805461ff001916905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600054610100900460ff16620002005760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000bd565b60408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b0217600155565b60805160a05160c05161568a620002666000396000610fcb01526000610fa201526000610f79015261568a6000f3fe60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e9e05c4211610059578063e9e05c421461053f578063f049875014610552578063fecf97341461057d57600080fd5b8063a35d99df146103d9578063cff0ab9614610412578063e965084c146104b357600080fd5b80639b5f694a116100b05780639b5f694a1461034a5780639bf62d821461037c578063a14238e7146103a957600080fd5b80638b4c40b0146101925780638c3152e91461032a57600080fd5b806354fd4d50116101225780636dbffb78116101075780636dbffb78146102ca578063724c184c146102ea5780638456cb591461031557600080fd5b806354fd4d501461027e5780635c975abb146102a057600080fd5b80633f4ba83a116101535780633f4ba83a1461021c578063452a9320146102315780634870496f1461025e57600080fd5b80621c2ff61461019957806333d7e2bd146101ef57600080fd5b36610194576101923334620186a060006040518060200160405280600081525061059d565b005b600080fd5b3480156101a557600080fd5b50603554610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101fb57600080fd5b506036546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561022857600080fd5b50610192610838565b34801561023d57600080fd5b506037546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561026a57600080fd5b50610192610279366004614bf6565b61093d565b34801561028a57600080fd5b50610293610f72565b6040516101e69190614d4c565b3480156102ac57600080fd5b506035546102ba9060ff1681565b60405190151581526020016101e6565b3480156102d657600080fd5b506102ba6102e5366004614d5f565b611015565b3480156102f657600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561032157600080fd5b506101926110d4565b34801561033657600080fd5b50610192610345366004614d78565b6111d6565b34801561035657600080fd5b506035546101c590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038857600080fd5b506032546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103b557600080fd5b506102ba6103c4366004614d5f565b60336020526000908152604090205460ff1681565b3480156103e557600080fd5b506103f96103f4366004614dca565b611a9a565b60405167ffffffffffffffff90911681526020016101e6565b34801561041e57600080fd5b5060015461047a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101e6565b3480156104bf57600080fd5b506105116104ce366004614d5f565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101e6565b61019261054d366004614df5565b61059d565b34801561055e57600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561058957600080fd5b50610192610598366004614e70565b611ab3565b8260005a905083156106545773ffffffffffffffffffffffffffffffffffffffff87161561065457604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b61065e8351611a9a565b67ffffffffffffffff168567ffffffffffffffff161015610701576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161064b565b6201d4c08351111561076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161064b565b33328114610790575033731111000000000000000000000000000000001111015b600034888888886040516020016107ab959493929190614eca565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161081b9190614d4c565b60405180910390a4505061082f8282611cc1565b50505050505050565b60375473ffffffffffffffffffffffffffffffffffffffff1633146108df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e70617573650000000000000000000000000000000000000000000000606482015260840161064b565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff16156109aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161064b565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610a69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161064b565b6035546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101869052600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b029190614f4f565b519050610b1c610b1736869003860186614fb4565b611fee565b8114610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161064b565b6000610bb58761204a565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ccf5750805160355460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190614f4f565b5114155b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e000000000000000000606482015260840161064b565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610e249101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610e1a888a61501a565b8a6040013561207a565b610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161064b565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6060610f9d7f000000000000000000000000000000000000000000000000000000000000000061209e565b610fc67f000000000000000000000000000000000000000000000000000000000000000061209e565b610fef7f000000000000000000000000000000000000000000000000000000000000000061209e565b6040516020016110019392919061509e565b604051602081830303815290604052905090565b6035546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000916110ce9161010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190614f4f565b602001516fffffffffffffffffffffffffffffffff166121db565b92915050565b60375473ffffffffffffffffffffffffffffffffffffffff16331461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20706175736500000000000000000000000000000000000000000000000000606482015260840161064b565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610933565b60355460ff1615611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161064b565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161064b565b60006112f78261204a565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161064b565b603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190615114565b81602001516fffffffffffffffffffffffffffffffff16101561153e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a40161064b565b61155d81602001516fffffffffffffffffffffffffffffffff166121db565b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a40161064b565b60355460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9091166004820152600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf9190614f4f565b8251815191925014611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a40161064b565b61179881602001516fffffffffffffffffffffffffffffffff166121db565b61184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a40161064b565b60008381526033602052604090205460ff16156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161064b565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161198b93929190612280565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906119f090841515815260200190565b60405180910390a280158015611a065750326001145b15611a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161064b565b5050505050565b6000611aa782601061515c565b6110ce9061520861518c565b600054600290610100900460ff16158015611ad5575060005460ff8083169116105b611b61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161064b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100908117909155603280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811661dead17909155603580546036805473ffffffffffffffffffffffffffffffffffffffff89811691861691909117909155603780548a83169516949094179093558515159289169093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217179055611c5c6122de565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600154600090611cf7907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436151b8565b90506000611d036123c1565b90506000816020015160ff16826000015163ffffffff16611d2491906151fe565b90508215611e5b57600154600090611d5b908390700100000000000000000000000000000000900467ffffffffffffffff16615266565b90506000836040015160ff1683611d7291906152da565b600154611d929084906fffffffffffffffffffffffffffffffff166152da565b611d9c91906151fe565b600154909150600090611ded90611dc69084906fffffffffffffffffffffffffffffffff16615396565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612487565b90506001861115611e1c57611e19611dc682876040015160ff1660018a611e1491906151b8565b6124a6565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e8e908490700100000000000000000000000000000000900467ffffffffffffffff1661518c565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611f71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161064b565b600154600090611f9d906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661540a565b90506000611faf48633b9aca006124fb565b611fb99083615447565b905060005a611fc890886151b8565b905080821115611fe457611fe4611fdf82846151b8565b612512565b5050505050505050565b6000816000015182602001518360400151846060015160405160200161202d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761202d97909695910161545b565b60008061208686612540565b905061209481868686612572565b9695505050505050565b6060816000036120e157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561210b57806120f5816154b2565b91506121049050600a83615447565b91506120e5565b60008167ffffffffffffffff81111561212657612126614a16565b6040519080825280601f01601f191660200182016040528015612150576020820181803683370190505b5090505b84156121d3576121656001836151b8565b9150612172600a866154ea565b61217d9060306154fe565b60f81b81838151811061219257612192615516565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506121cc600a86615447565b9450612154565b949350505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226e9190615114565b61227890836154fe565b421192915050565b60008060006122908660006125a2565b9050806122c6576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161064b565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260365483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa15801561245e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612482919061556a565b905090565b600061249c61249685856125c0565b836125d0565b90505b9392505050565b6000670de0b6b3a76400006124e76124be85836151fe565b6124d090670de0b6b3a7640000615266565b6124e285670de0b6b3a76400006152da565b6125df565b6124f190866152da565b61249c91906151fe565b60008183101561250b578161249f565b5090919050565b6000805a90505b825a61252590836151b8565b101561253b57612534826154b2565b9150612519565b505050565b6060818051906020012060405160200161255c91815260200190565b6040516020818303038152906040529050919050565b600061259984612583878686612610565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561250b578161249f565b600081831261250b578161249f565b600061249f670de0b6b3a7640000836125f78661308e565b61260191906152da565b61260b91906151fe565b6132d2565b6060600084511161267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161064b565b600061268884613511565b90506000612695866135fd565b90506000846040516020016126ac91815260200190565b60405160208183030381529060405290506000805b84518110156130055760008582815181106126de576126de615516565b602002602001015190508451831115612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161064b565b8260000361283257805180516020918201206040516127c7926127a192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161064b565b612989565b8051516020116128e8578051805160209182012060405161285c926127a192910190815260200190565b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161064b565b805184516020808701919091208251919092012014612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161064b565b612995601060016154fe565b81602001515103612b715784518303612b09576129cf81602001516010815181106129c2576129c2615516565b6020026020010151613660565b96506000875111612a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161064b565b60018651612a7091906151b8565b8214612afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161064b565b50505050505061249f565b6000858481518110612b1d57612b1d615516565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612b4857612b48615516565b60200260200101519050612b5b816137c0565b9550612b686001866154fe565b94505050612ff2565b600281602001515103612f6a576000612b89826137e5565b9050600081600081518110612ba057612ba0615516565b016020015160f81c90506000612bb7600283615609565b612bc290600261562b565b90506000612bd3848360ff16613809565b90506000612be18a89613809565b90506000612bef838361383f565b905080835114612c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161064b565b60ff851660021480612c96575060ff85166003145b15612e855780825114612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161064b565b612d4587602001516001815181106129c2576129c2615516565b9c5060008d5111612dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161064b565b60018c51612de691906151b8565b8814612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161064b565b50505050505050505050505061249f565b60ff85161580612e98575060ff85166001145b15612ed757612ec48760200151600181518110612eb757612eb7615516565b60200260200101516137c0565b9950612ed0818a6154fe565b9850612f5f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161064b565b505050505050612ff2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161064b565b5080612ffd816154b2565b9150506126c1565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161064b565b60008082136130f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161064b565b60006060613106846138f3565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361330357506000919050565b680755bf798b4a1bf1e58212613375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161064b565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561352f5761352f614a16565b60405190808252806020026020018201604052801561357457816020015b604080518082019091526060808252602082015281526020019060019003908161354d5790505b50915060005b818110156135f657604051806040016040528085838151811061359f5761359f615516565b602002602001015181526020016135ce8684815181106135c1576135c1615516565b60200260200101516139c9565b8152508382815181106135e3576135e3615516565b602090810291909101015260010161357a565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613655578060011b82018184015160001a8060041c8253600f811660018301535050600101613627565b509295945050505050565b60606000806000613670856139dc565b91945092509050600081600181111561368b5761368b61564e565b14613718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161064b565b61372282846154fe565b8551146137b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161064b565b61259985602001518484614449565b606060208260000151106137dc576137d782613660565b6110ce565b6110ce826144dd565b60606110ce61380483602001516000815181106129c2576129c2615516565b6135fd565b60608251821061382857506040805160208101909152600081526110ce565b61249f838384865161383a91906151b8565b6144f3565b6000808251845110613852578251613855565b83515b90505b80821080156138dc575082828151811061387457613874615516565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106138b3576138b3615516565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156138ec57816001019150613858565b5092915050565b600080821161395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161064b565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60606110ce6139d7836146cb565b6147b4565b600080600080846000015111613a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161064b565b6020840151805160001a607f8111613abf576000600160009450945094505050614442565b60b78111613ccd576000613ad46080836151b8565b905080876000015111613b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161064b565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613c0857507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161064b565b5060019550935060009250614442915050565b60bf811161401b576000613ce260b7836151b8565b905080876000015111613d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161064b565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161064b565b600184015160088302610100031c60378111613f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161064b565b613f4981846154fe565b895111613ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161064b565b6140098360016154fe565b97509550600094506144429350505050565b60f781116140fc57600061403060c0836151b8565b9050808760000151116140eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161064b565b600195509350849250614442915050565b600061410960f7836151b8565b9050808760000151116141c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161064b565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036142a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161064b565b600184015160088302610100031c60378111614366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161064b565b61437081846154fe565b895111614425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161064b565b6144308360016154fe565b97509550600194506144429350505050565b9193909250565b60608167ffffffffffffffff81111561446457614464614a16565b6040519080825280601f01601f19166020018201604052801561448e576020820181803683370190505b509050811561249f5760006144a384866154fe565b90506020820160005b848110156144c45782810151828201526020016144ac565b848111156144d3576000858301525b5050509392505050565b60606110ce826020015160008460000151614449565b60608182601f011015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161064b565b8282840110156145ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161064b565b8183018451101561463b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161064b565b60608215801561465a57604051915060008252602082016040526146c2565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561469357805183526020928301920161467b565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161064b565b50604080518082019091528151815260209182019181019190915290565b606060008060006147c4856139dc565b9194509250905060018160018111156147df576147df61564e565b1461486c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161064b565b845161487883856154fe565b14614905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161064b565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161491c5790505093506000835b8651811015614a0a5760008061498f6040518060400160405280858c6000015161497391906151b8565b8152602001858c6020015161498891906154fe565b90526139dc565b5091509150604051806040016040528083836149ab91906154fe565b8152602001848b602001516149c091906154fe565b8152508885815181106149d5576149d5615516565b60209081029190910101526149eb6001856154fe565b93506149f781836154fe565b614a0190846154fe565b92505050614949565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a8c57614a8c614a16565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614ab657600080fd5b50565b600082601f830112614aca57600080fd5b813567ffffffffffffffff811115614ae457614ae4614a16565b614b1560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614a45565b818152846020838601011115614b2a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614b5957600080fd5b60405160c0810167ffffffffffffffff8282108183111715614b7d57614b7d614a16565b816040528293508435835260208501359150614b9882614a94565b81602084015260408501359150614bae82614a94565b816040840152606085013560608401526080850135608084015260a0850135915080821115614bdc57600080fd5b50614be985828601614ab9565b60a0830152505092915050565b600080600080600085870360e0811215614c0f57600080fd5b863567ffffffffffffffff80821115614c2757600080fd5b614c338a838b01614b47565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614c6c57600080fd5b60408901955060c0890135925080831115614c8657600080fd5b828901925089601f840112614c9a57600080fd5b8235915080821115614cab57600080fd5b508860208260051b8401011115614cc157600080fd5b959894975092955050506020019190565b60005b83811015614ced578181015183820152602001614cd5565b83811115614cfc576000848401525b50505050565b60008151808452614d1a816020860160208601614cd2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061249f6020830184614d02565b600060208284031215614d7157600080fd5b5035919050565b600060208284031215614d8a57600080fd5b813567ffffffffffffffff811115614da157600080fd5b6121d384828501614b47565b803567ffffffffffffffff81168114614dc557600080fd5b919050565b600060208284031215614ddc57600080fd5b61249f82614dad565b80358015158114614dc557600080fd5b600080600080600060a08688031215614e0d57600080fd5b8535614e1881614a94565b945060208601359350614e2d60408701614dad565b9250614e3b60608701614de5565b9150608086013567ffffffffffffffff811115614e5757600080fd5b614e6388828901614ab9565b9150509295509295909350565b60008060008060808587031215614e8657600080fd5b8435614e9181614a94565b93506020850135614ea181614a94565b92506040850135614eb181614a94565b9150614ebf60608601614de5565b905092959194509250565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614f1e816049850160208701614cd2565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114614dc557600080fd5b600060608284031215614f6157600080fd5b6040516060810181811067ffffffffffffffff82111715614f8457614f84614a16565b60405282518152614f9760208401614f2f565b6020820152614fa860408401614f2f565b60408201529392505050565b600060808284031215614fc657600080fd5b6040516080810181811067ffffffffffffffff82111715614fe957614fe9614a16565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff8084111561503557615035614a16565b8360051b6020615046818301614a45565b86815291850191818101903684111561505e57600080fd5b865b84811015615092578035868111156150785760008081fd5b61508436828b01614ab9565b845250918301918301615060565b50979650505050505050565b600084516150b0818460208901614cd2565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516150ec816001850160208a01614cd2565b60019201918201528351615107816002840160208801614cd2565b0160020195945050505050565b60006020828403121561512657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516818304811182151516156151835761518361512d565b02949350505050565b600067ffffffffffffffff8083168185168083038211156151af576151af61512d565b01949350505050565b6000828210156151ca576151ca61512d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261520d5761520d6151cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156152615761526161512d565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156152a0576152a061512d565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156152d4576152d461512d565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561531b5761531b61512d565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156153565761535661512d565b600087129250878205871284841616156153725761537261512d565b878505871281841616156153885761538861512d565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156153d0576153d061512d565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156154045761540461512d565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154425761544261512d565b500290565b600082615456576154566151cf565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526154a660c0830184614d02565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036154e3576154e361512d565b5060010190565b6000826154f9576154f96151cf565b500690565b600082198211156155115761551161512d565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805163ffffffff81168114614dc557600080fd5b805160ff81168114614dc557600080fd5b600060c0828403121561557c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561559f5761559f614a16565b6040526155ab83615545565b81526155b960208401615559565b60208201526155ca60408401615559565b60408201526155db60608401615545565b60608201526155ec60808401615545565b60808201526155fd60a08401614f2f565b60a08201529392505050565b600060ff83168061561c5761561c6151cf565b8060ff84160691505092915050565b600060ff821660ff8416808210156156455761564561512d565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a",
} }
// OptimismPortalABI is the input ABI used to generate the binding from. // OptimismPortalABI is the input ABI used to generate the binding from.
......
...@@ -9,11 +9,11 @@ import ( ...@@ -9,11 +9,11 @@ import (
"github.com/ethereum-optimism/optimism/op-bindings/solc" "github.com/ethereum-optimism/optimism/op-bindings/solc"
) )
const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1014_storage\"},{\"astId\":1003,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)48_storage\"},{\"astId\":1004,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"50\",\"type\":\"t_address\"},{\"astId\":1005,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1006,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"provenWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1013_storage)\"},{\"astId\":1007,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"paused\",\"offset\":0,\"slot\":\"53\",\"type\":\"t_bool\"},{\"astId\":1008,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"$l2Oracle\",\"offset\":1,\"slot\":\"53\",\"type\":\"t_contract(L2OutputOracle)1011\"},{\"astId\":1009,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"$systemConfig\",\"offset\":0,\"slot\":\"54\",\"type\":\"t_contract(SystemConfig)1012\"},{\"astId\":1010,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"$guardian\",\"offset\":0,\"slot\":\"55\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)48_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[48]\",\"numberOfBytes\":\"1536\",\"base\":\"t_uint256\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_contract(L2OutputOracle)1011\":{\"encoding\":\"inplace\",\"label\":\"contract L2OutputOracle\",\"numberOfBytes\":\"20\"},\"t_contract(SystemConfig)1012\":{\"encoding\":\"inplace\",\"label\":\"contract SystemConfig\",\"numberOfBytes\":\"20\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1013_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e struct OptimismPortal.ProvenWithdrawal)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_struct(ProvenWithdrawal)1013_storage\"},\"t_struct(ProvenWithdrawal)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct OptimismPortal.ProvenWithdrawal\",\"numberOfBytes\":\"64\"},\"t_struct(ResourceParams)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}" const OptimismPortalStorageLayoutJSON = "{\"storage\":[{\"astId\":1000,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initialized\",\"offset\":0,\"slot\":\"0\",\"type\":\"t_uint8\"},{\"astId\":1001,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"_initializing\",\"offset\":1,\"slot\":\"0\",\"type\":\"t_bool\"},{\"astId\":1002,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"params\",\"offset\":0,\"slot\":\"1\",\"type\":\"t_struct(ResourceParams)1014_storage\"},{\"astId\":1003,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"__gap\",\"offset\":0,\"slot\":\"2\",\"type\":\"t_array(t_uint256)48_storage\"},{\"astId\":1004,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Sender\",\"offset\":0,\"slot\":\"50\",\"type\":\"t_address\"},{\"astId\":1005,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"finalizedWithdrawals\",\"offset\":0,\"slot\":\"51\",\"type\":\"t_mapping(t_bytes32,t_bool)\"},{\"astId\":1006,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"provenWithdrawals\",\"offset\":0,\"slot\":\"52\",\"type\":\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1013_storage)\"},{\"astId\":1007,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"paused\",\"offset\":0,\"slot\":\"53\",\"type\":\"t_bool\"},{\"astId\":1008,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"l2Oracle\",\"offset\":1,\"slot\":\"53\",\"type\":\"t_contract(L2OutputOracle)1011\"},{\"astId\":1009,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"systemConfig\",\"offset\":0,\"slot\":\"54\",\"type\":\"t_contract(SystemConfig)1012\"},{\"astId\":1010,\"contract\":\"src/L1/OptimismPortal.sol:OptimismPortal\",\"label\":\"guardian\",\"offset\":0,\"slot\":\"55\",\"type\":\"t_address\"}],\"types\":{\"t_address\":{\"encoding\":\"inplace\",\"label\":\"address\",\"numberOfBytes\":\"20\"},\"t_array(t_uint256)48_storage\":{\"encoding\":\"inplace\",\"label\":\"uint256[48]\",\"numberOfBytes\":\"1536\",\"base\":\"t_uint256\"},\"t_bool\":{\"encoding\":\"inplace\",\"label\":\"bool\",\"numberOfBytes\":\"1\"},\"t_bytes32\":{\"encoding\":\"inplace\",\"label\":\"bytes32\",\"numberOfBytes\":\"32\"},\"t_contract(L2OutputOracle)1011\":{\"encoding\":\"inplace\",\"label\":\"contract L2OutputOracle\",\"numberOfBytes\":\"20\"},\"t_contract(SystemConfig)1012\":{\"encoding\":\"inplace\",\"label\":\"contract SystemConfig\",\"numberOfBytes\":\"20\"},\"t_mapping(t_bytes32,t_bool)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e bool)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_bool\"},\"t_mapping(t_bytes32,t_struct(ProvenWithdrawal)1013_storage)\":{\"encoding\":\"mapping\",\"label\":\"mapping(bytes32 =\u003e struct OptimismPortal.ProvenWithdrawal)\",\"numberOfBytes\":\"32\",\"key\":\"t_bytes32\",\"value\":\"t_struct(ProvenWithdrawal)1013_storage\"},\"t_struct(ProvenWithdrawal)1013_storage\":{\"encoding\":\"inplace\",\"label\":\"struct OptimismPortal.ProvenWithdrawal\",\"numberOfBytes\":\"64\"},\"t_struct(ResourceParams)1014_storage\":{\"encoding\":\"inplace\",\"label\":\"struct ResourceMetering.ResourceParams\",\"numberOfBytes\":\"32\"},\"t_uint128\":{\"encoding\":\"inplace\",\"label\":\"uint128\",\"numberOfBytes\":\"16\"},\"t_uint256\":{\"encoding\":\"inplace\",\"label\":\"uint256\",\"numberOfBytes\":\"32\"},\"t_uint64\":{\"encoding\":\"inplace\",\"label\":\"uint64\",\"numberOfBytes\":\"8\"},\"t_uint8\":{\"encoding\":\"inplace\",\"label\":\"uint8\",\"numberOfBytes\":\"1\"}}}"
var OptimismPortalStorageLayout = new(solc.StorageLayout) var OptimismPortalStorageLayout = new(solc.StorageLayout)
var OptimismPortalDeployedBin = "0x60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e9e05c4211610059578063e9e05c42146104de578063f0498750146101ef578063fecf9734146104f157600080fd5b8063a35d99df14610378578063cff0ab96146103b1578063e965084c1461045257600080fd5b80639b5f694a116100b05780639b5f694a146101995780639bf62d821461031b578063a14238e71461034857600080fd5b80638b4c40b0146101925780638c3152e9146102fb57600080fd5b806354fd4d50116101225780636dbffb78116101075780636dbffb78146102c6578063724c184c1461022f5780638456cb59146102e657600080fd5b806354fd4d501461027a5780635c975abb1461029c57600080fd5b80633f4ba83a116101535780633f4ba83a1461021a578063452a93201461022f5780634870496f1461025a57600080fd5b80621c2ff61461019957806333d7e2bd146101ef57600080fd5b36610194576101923334620186a0600060405180602001604052806000815250610511565b005b600080fd5b3480156101a557600080fd5b50603554610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101fb57600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561022657600080fd5b506101926107ac565b34801561023b57600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561026657600080fd5b50610192610275366004614b6a565b6108b1565b34801561028657600080fd5b5061028f610ee6565b6040516101e69190614cc0565b3480156102a857600080fd5b506035546102b69060ff1681565b60405190151581526020016101e6565b3480156102d257600080fd5b506102b66102e1366004614cd3565b610f89565b3480156102f257600080fd5b50610192611048565b34801561030757600080fd5b50610192610316366004614cec565b61114a565b34801561032757600080fd5b506032546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561035457600080fd5b506102b6610363366004614cd3565b60336020526000908152604090205460ff1681565b34801561038457600080fd5b50610398610393366004614d3e565b611a0e565b60405167ffffffffffffffff90911681526020016101e6565b3480156103bd57600080fd5b50600154610419906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101e6565b34801561045e57600080fd5b506104b061046d366004614cd3565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101e6565b6101926104ec366004614d69565b610511565b3480156104fd57600080fd5b5061019261050c366004614de4565b611a27565b8260005a905083156105c85773ffffffffffffffffffffffffffffffffffffffff8716156105c857604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b6105d28351611a0e565b67ffffffffffffffff168567ffffffffffffffff161015610675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b6201d4c0835111156106e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016105bf565b33328114610704575033731111000000000000000000000000000000001111015b6000348888888860405160200161071f959493929190614e3e565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161078f9190614cc0565b60405180910390a450506107a38282611c35565b50505050505050565b60375473ffffffffffffffffffffffffffffffffffffffff163314610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e7061757365000000000000000000000000000000000000000000000060648201526084016105bf565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff161561091e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016105bf565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff16036109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016105bf565b6035546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101869052600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a769190614ec3565b519050610a90610a8b36869003860186614f28565b611f62565b8114610b1e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016105bf565b6000610b2987611fbe565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610c435750805160355460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610c1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3f9190614ec3565b5114155b610ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e00000000000000000060648201526084016105bf565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610d989101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610d8e888a614f8e565b8a60400135611fee565b610e24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016105bf565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6060610f117f0000000000000000000000000000000000000000000000000000000000000000612012565b610f3a7f0000000000000000000000000000000000000000000000000000000000000000612012565b610f637f0000000000000000000000000000000000000000000000000000000000000000612012565b604051602001610f7593929190615012565b604051602081830303815290604052905090565b6035546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000916110429161010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015611003573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110279190614ec3565b602001516fffffffffffffffffffffffffffffffff1661214f565b92915050565b60375473ffffffffffffffffffffffffffffffffffffffff1633146110ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e2070617573650000000000000000000000000000000000000000000000000060648201526084016105bf565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258906020016108a7565b60355460ff16156111b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016105bf565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016105bf565b600061126b82611fbe565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff80821694830185905270010000000000000000000000000000000090910416918101919091529293509003611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016105bf565b603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e79190615088565b81602001516fffffffffffffffffffffffffffffffff1610156114b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a4016105bf565b6114d181602001516fffffffffffffffffffffffffffffffff1661214f565b611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a4016105bf565b60355460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9091166004820152600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561160f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116339190614ec3565b82518151919250146116ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a4016105bf565b61170c81602001516fffffffffffffffffffffffffffffffff1661214f565b6117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a4016105bf565b60008381526033602052604090205460ff161561185d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016105bf565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a08801516118ff939291906121f4565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b9061196490841515815260200190565b60405180910390a28015801561197a5750326001145b15611a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016105bf565b5050505050565b6000611a1b8260106150d0565b61104290615208615100565b600054600290610100900460ff16158015611a49575060005460ff8083169116105b611ad5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016105bf565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100908117909155603280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811661dead17909155603580546036805473ffffffffffffffffffffffffffffffffffffffff89811691861691909117909155603780548a83169516949094179093558515159289169093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217179055611bd0612252565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600154600090611c6b907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361512c565b90506000611c77612335565b90506000816020015160ff16826000015163ffffffff16611c989190615172565b90508215611dcf57600154600090611ccf908390700100000000000000000000000000000000900467ffffffffffffffff166151da565b90506000836040015160ff1683611ce6919061524e565b600154611d069084906fffffffffffffffffffffffffffffffff1661524e565b611d109190615172565b600154909150600090611d6190611d3a9084906fffffffffffffffffffffffffffffffff1661530a565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff166123fb565b90506001861115611d9057611d8d611d3a82876040015160ff1660018a611d88919061512c565b61241a565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e02908490700100000000000000000000000000000000900467ffffffffffffffff16615100565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611ee5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d6974000060648201526084016105bf565b600154600090611f11906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661537e565b90506000611f2348633b9aca0061246f565b611f2d90836153bb565b905060005a611f3c908861512c565b905080821115611f5857611f58611f53828461512c565b612486565b5050505050505050565b60008160000151826020015183604001518460600151604051602001611fa1949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a08801519351600097611fa19790969591016153cf565b600080611ffa866124b4565b9050612008818686866124e6565b9695505050505050565b60608160000361205557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561207f578061206981615426565b91506120789050600a836153bb565b9150612059565b60008167ffffffffffffffff81111561209a5761209a61498a565b6040519080825280601f01601f1916602001820160405280156120c4576020820181803683370190505b5090505b8415612147576120d960018361512c565b91506120e6600a8661545e565b6120f1906030615472565b60f81b8183815181106121065761210661548a565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612140600a866153bb565b94506120c8565b949350505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e29190615088565b6121ec9083615472565b421192915050565b6000806000612204866000612516565b90508061223a576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff166122e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016105bf565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260365483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa1580156123d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f691906154de565b905090565b600061241061240a8585612534565b83612544565b90505b9392505050565b6000670de0b6b3a764000061245b6124328583615172565b61244490670de0b6b3a76400006151da565b61245685670de0b6b3a764000061524e565b612553565b612465908661524e565b6124109190615172565b60008183101561247f5781612413565b5090919050565b6000805a90505b825a612499908361512c565b10156124af576124a882615426565b915061248d565b505050565b606081805190602001206040516020016124d091815260200190565b6040516020818303038152906040529050919050565b600061250d846124f7878686612584565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561247f5781612413565b600081831261247f5781612413565b6000612413670de0b6b3a76400008361256b86613002565b612575919061524e565b61257f9190615172565b613246565b606060008451116125f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016105bf565b60006125fc84613485565b9050600061260986613571565b905060008460405160200161262091815260200190565b60405160208183030381529060405290506000805b8451811015612f795760008582815181106126525761265261548a565b6020026020010151905084518311156126ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016105bf565b826000036127a6578051805160209182012060405161273b9261271592910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016105bf565b6128fd565b80515160201161285c57805180516020918201206040516127d09261271592910190815260200190565b6127a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016105bf565b8051845160208087019190912082519190920120146128fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016105bf565b61290960106001615472565b81602001515103612ae55784518303612a7d5761294381602001516010815181106129365761293661548a565b60200260200101516135d4565b965060008751116129d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016105bf565b600186516129e4919061512c565b8214612a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016105bf565b505050505050612413565b6000858481518110612a9157612a9161548a565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612abc57612abc61548a565b60200260200101519050612acf81613734565b9550612adc600186615472565b94505050612f66565b600281602001515103612ede576000612afd82613759565b9050600081600081518110612b1457612b1461548a565b016020015160f81c90506000612b2b60028361557d565b612b3690600261559f565b90506000612b47848360ff1661377d565b90506000612b558a8961377d565b90506000612b6383836137b3565b905080835114612bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016105bf565b60ff851660021480612c0a575060ff85166003145b15612df95780825114612c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016105bf565b612cb987602001516001815181106129365761293661548a565b9c5060008d5111612d4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016105bf565b60018c51612d5a919061512c565b8814612de8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016105bf565b505050505050505050505050612413565b60ff85161580612e0c575060ff85166001145b15612e4b57612e388760200151600181518110612e2b57612e2b61548a565b6020026020010151613734565b9950612e44818a615472565b9850612ed3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016105bf565b505050505050612f66565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016105bf565b5080612f7181615426565b915050612635565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016105bf565b600080821361306d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016105bf565b6000606061307a84613867565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361327757506000919050565b680755bf798b4a1bf1e582126132e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016105bf565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff8111156134a3576134a361498a565b6040519080825280602002602001820160405280156134e857816020015b60408051808201909152606080825260208201528152602001906001900390816134c15790505b50915060005b8181101561356a5760405180604001604052808583815181106135135761351361548a565b602002602001015181526020016135428684815181106135355761353561548a565b602002602001015161393d565b8152508382815181106135575761355761548a565b60209081029190910101526001016134ee565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b838110156135c9578060011b82018184015160001a8060041c8253600f81166001830153505060010161359b565b509295945050505050565b606060008060006135e485613950565b9194509250905060008160018111156135ff576135ff6155c2565b1461368c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016105bf565b6136968284615472565b855114613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e64657200000000000000000000000060648201526084016105bf565b61250d856020015184846143bd565b606060208260000151106137505761374b826135d4565b611042565b61104282614451565b606061104261377883602001516000815181106129365761293661548a565b613571565b60608251821061379c5750604080516020810190915260008152611042565b61241383838486516137ae919061512c565b614467565b60008082518451106137c65782516137c9565b83515b90505b808210801561385057508282815181106137e8576137e861548a565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106138275761382761548a565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613860578160010191506137cc565b5092915050565b60008082116138d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016105bf565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b606061104261394b8361463f565b614728565b600080600080846000015111613a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016105bf565b6020840151805160001a607f8111613a335760006001600094509450945050506143b6565b60b78111613c41576000613a4860808361512c565b905080876000015111613b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a4016105bf565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613b7c57507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613c2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a4016105bf565b50600195509350600092506143b6915050565b60bf8111613f8f576000613c5660b78361512c565b905080876000015111613d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a4016105bf565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613def576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a4016105bf565b600184015160088302610100031c60378111613eb3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a4016105bf565b613ebd8184615472565b895111613f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a4016105bf565b613f7d836001615472565b97509550600094506143b69350505050565b60f78111614070576000613fa460c08361512c565b90508087600001511161405f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a4016105bf565b6001955093508492506143b6915050565b600061407d60f78361512c565b905080876000015111614138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a4016105bf565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003614216576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a4016105bf565b600184015160088302610100031c603781116142da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a4016105bf565b6142e48184615472565b895111614399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a4016105bf565b6143a4836001615472565b97509550600194506143b69350505050565b9193909250565b60608167ffffffffffffffff8111156143d8576143d861498a565b6040519080825280601f01601f191660200182016040528015614402576020820181803683370190505b50905081156124135760006144178486615472565b90506020820160005b84811015614438578281015182820152602001614420565b84811115614447576000858301525b5050509392505050565b60606110428260200151600084600001516143bd565b60608182601f0110156144d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016105bf565b828284011015614542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016105bf565b818301845110156145af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016105bf565b6060821580156145ce5760405191506000825260208201604052614636565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156146075780518352602092830192016145ef565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6040805180820190915260008082526020820152600082511161470a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a4016105bf565b50604080518082019091528151815260209182019181019190915290565b6060600080600061473885613950565b919450925090506001816001811115614753576147536155c2565b146147e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016105bf565b84516147ec8385615472565b14614879576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e646572000000000000000000000000000060648201526084016105bf565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816148905790505093506000835b865181101561497e576000806149036040518060400160405280858c600001516148e7919061512c565b8152602001858c602001516148fc9190615472565b9052613950565b50915091506040518060400160405280838361491f9190615472565b8152602001848b602001516149349190615472565b8152508885815181106149495761494961548a565b602090810291909101015261495f600185615472565b935061496b8183615472565b6149759084615472565b925050506148bd565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a0057614a0061498a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614a2a57600080fd5b50565b600082601f830112614a3e57600080fd5b813567ffffffffffffffff811115614a5857614a5861498a565b614a8960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016149b9565b818152846020838601011115614a9e57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614acd57600080fd5b60405160c0810167ffffffffffffffff8282108183111715614af157614af161498a565b816040528293508435835260208501359150614b0c82614a08565b81602084015260408501359150614b2282614a08565b816040840152606085013560608401526080850135608084015260a0850135915080821115614b5057600080fd5b50614b5d85828601614a2d565b60a0830152505092915050565b600080600080600085870360e0811215614b8357600080fd5b863567ffffffffffffffff80821115614b9b57600080fd5b614ba78a838b01614abb565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614be057600080fd5b60408901955060c0890135925080831115614bfa57600080fd5b828901925089601f840112614c0e57600080fd5b8235915080821115614c1f57600080fd5b508860208260051b8401011115614c3557600080fd5b959894975092955050506020019190565b60005b83811015614c61578181015183820152602001614c49565b83811115614c70576000848401525b50505050565b60008151808452614c8e816020860160208601614c46565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006124136020830184614c76565b600060208284031215614ce557600080fd5b5035919050565b600060208284031215614cfe57600080fd5b813567ffffffffffffffff811115614d1557600080fd5b61214784828501614abb565b803567ffffffffffffffff81168114614d3957600080fd5b919050565b600060208284031215614d5057600080fd5b61241382614d21565b80358015158114614d3957600080fd5b600080600080600060a08688031215614d8157600080fd5b8535614d8c81614a08565b945060208601359350614da160408701614d21565b9250614daf60608701614d59565b9150608086013567ffffffffffffffff811115614dcb57600080fd5b614dd788828901614a2d565b9150509295509295909350565b60008060008060808587031215614dfa57600080fd5b8435614e0581614a08565b93506020850135614e1581614a08565b92506040850135614e2581614a08565b9150614e3360608601614d59565b905092959194509250565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614e92816049850160208701614c46565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114614d3957600080fd5b600060608284031215614ed557600080fd5b6040516060810181811067ffffffffffffffff82111715614ef857614ef861498a565b60405282518152614f0b60208401614ea3565b6020820152614f1c60408401614ea3565b60408201529392505050565b600060808284031215614f3a57600080fd5b6040516080810181811067ffffffffffffffff82111715614f5d57614f5d61498a565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff80841115614fa957614fa961498a565b8360051b6020614fba8183016149b9565b868152918501918181019036841115614fd257600080fd5b865b8481101561500657803586811115614fec5760008081fd5b614ff836828b01614a2d565b845250918301918301614fd4565b50979650505050505050565b60008451615024818460208901614c46565b80830190507f2e000000000000000000000000000000000000000000000000000000000000008082528551615060816001850160208a01614c46565b6001920191820152835161507b816002840160208801614c46565b0160020195945050505050565b60006020828403121561509a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516818304811182151516156150f7576150f76150a1565b02949350505050565b600067ffffffffffffffff808316818516808303821115615123576151236150a1565b01949350505050565b60008282101561513e5761513e6150a1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261518157615181615143565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156151d5576151d56150a1565b500590565b6000808312837f800000000000000000000000000000000000000000000000000000000000000001831281151615615214576152146150a1565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018313811615615248576152486150a1565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561528f5761528f6150a1565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156152ca576152ca6150a1565b600087129250878205871284841616156152e6576152e66150a1565b878505871281841616156152fc576152fc6150a1565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03841381151615615344576153446150a1565b827f8000000000000000000000000000000000000000000000000000000000000000038412811615615378576153786150a1565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156153b6576153b66150a1565b500290565b6000826153ca576153ca615143565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a083015261541a60c0830184614c76565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615457576154576150a1565b5060010190565b60008261546d5761546d615143565b500690565b60008219821115615485576154856150a1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805163ffffffff81168114614d3957600080fd5b805160ff81168114614d3957600080fd5b600060c082840312156154f057600080fd5b60405160c0810181811067ffffffffffffffff821117156155135761551361498a565b60405261551f836154b9565b815261552d602084016154cd565b602082015261553e604084016154cd565b604082015261554f606084016154b9565b6060820152615560608084016154b9565b608082015261557160a08401614ea3565b60a08201529392505050565b600060ff83168061559057615590615143565b8060ff84160691505092915050565b600060ff821660ff8416808210156155b9576155b96150a1565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a" var OptimismPortalDeployedBin = "0x60806040526004361061016d5760003560e01c80638b4c40b0116100cb578063a35d99df1161007f578063e9e05c4211610059578063e9e05c421461053f578063f049875014610552578063fecf97341461057d57600080fd5b8063a35d99df146103d9578063cff0ab9614610412578063e965084c146104b357600080fd5b80639b5f694a116100b05780639b5f694a1461034a5780639bf62d821461037c578063a14238e7146103a957600080fd5b80638b4c40b0146101925780638c3152e91461032a57600080fd5b806354fd4d50116101225780636dbffb78116101075780636dbffb78146102ca578063724c184c146102ea5780638456cb591461031557600080fd5b806354fd4d501461027e5780635c975abb146102a057600080fd5b80633f4ba83a116101535780633f4ba83a1461021c578063452a9320146102315780634870496f1461025e57600080fd5b80621c2ff61461019957806333d7e2bd146101ef57600080fd5b36610194576101923334620186a060006040518060200160405280600081525061059d565b005b600080fd5b3480156101a557600080fd5b50603554610100900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156101fb57600080fd5b506036546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561022857600080fd5b50610192610838565b34801561023d57600080fd5b506037546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b34801561026a57600080fd5b50610192610279366004614bf6565b61093d565b34801561028a57600080fd5b50610293610f72565b6040516101e69190614d4c565b3480156102ac57600080fd5b506035546102ba9060ff1681565b60405190151581526020016101e6565b3480156102d657600080fd5b506102ba6102e5366004614d5f565b611015565b3480156102f657600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561032157600080fd5b506101926110d4565b34801561033657600080fd5b50610192610345366004614d78565b6111d6565b34801561035657600080fd5b506035546101c590610100900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561038857600080fd5b506032546101c59073ffffffffffffffffffffffffffffffffffffffff1681565b3480156103b557600080fd5b506102ba6103c4366004614d5f565b60336020526000908152604090205460ff1681565b3480156103e557600080fd5b506103f96103f4366004614dca565b611a9a565b60405167ffffffffffffffff90911681526020016101e6565b34801561041e57600080fd5b5060015461047a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff92831660208501529116908201526060016101e6565b3480156104bf57600080fd5b506105116104ce366004614d5f565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff92831660208501529116908201526060016101e6565b61019261054d366004614df5565b61059d565b34801561055e57600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff166101c5565b34801561058957600080fd5b50610192610598366004614e70565b611ab3565b8260005a905083156106545773ffffffffffffffffffffffffffffffffffffffff87161561065457604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084015b60405180910390fd5b61065e8351611a9a565b67ffffffffffffffff168567ffffffffffffffff161015610701576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c0000000000000000000000000000000000000000000000000000000000606482015260840161064b565b6201d4c08351111561076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c617267650000604482015260640161064b565b33328114610790575033731111000000000000000000000000000000001111015b600034888888886040516020016107ab959493929190614eca565b604051602081830303815290604052905060008973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c328460405161081b9190614d4c565b60405180910390a4505061082f8282611cc1565b50505050505050565b60375473ffffffffffffffffffffffffffffffffffffffff1633146108df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20756e70617573650000000000000000000000000000000000000000000000606482015260840161064b565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa906020015b60405180910390a1565b60355460ff16156109aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161064b565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1603610a69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e747261637400606482015260840161064b565b6035546040517fa25ae55700000000000000000000000000000000000000000000000000000000815260048101869052600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ade573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b029190614f4f565b519050610b1c610b1736869003860186614fb4565b611fee565b8114610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f660000000000000000000000000000000000000000000000606482015260840161064b565b6000610bb58761204a565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610ccf5750805160355460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015261010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa158015610ca7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccb9190614f4f565b5114155b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e000000000000000000606482015260840161064b565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610e249101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610e1a888a61501a565b8a6040013561207a565b610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f660000000000000000000000000000606482015260840161064b565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b6060610f9d7f000000000000000000000000000000000000000000000000000000000000000061209e565b610fc67f000000000000000000000000000000000000000000000000000000000000000061209e565b610fef7f000000000000000000000000000000000000000000000000000000000000000061209e565b6040516020016110019392919061509e565b604051602081830303815290604052905090565b6035546040517fa25ae557000000000000000000000000000000000000000000000000000000008152600481018390526000916110ce9161010090910473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561108f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b39190614f4f565b602001516fffffffffffffffffffffffffffffffff166121db565b92915050565b60375473ffffffffffffffffffffffffffffffffffffffff16331461117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4f7074696d69736d506f7274616c3a206f6e6c7920677561726469616e20636160448201527f6e20706175736500000000000000000000000000000000000000000000000000606482015260840161064b565b603580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602001610933565b60355460ff1615611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a2070617573656400000000000000000000604482015260640161064b565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead146112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e00606482015260840161064b565b60006112f78261204a565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff808216948301859052700100000000000000000000000000000000909104169181019190915292935090036113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e207965740000000000000000000000000000606482015260840161064b565b603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190615114565b81602001516fffffffffffffffffffffffffffffffff16101561153e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a40161064b565b61155d81602001516fffffffffffffffffffffffffffffffff166121db565b61160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a40161064b565b60355460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff9091166004820152600091610100900473ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa15801561169b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116bf9190614f4f565b8251815191925014611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a40161064b565b61179881602001516fffffffffffffffffffffffffffffffff166121db565b61184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a40161064b565b60008381526033602052604090205460ff16156118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a65640000000000000000000000606482015260840161064b565b600083815260336020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055908601516032805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff00000000000000000000000000000000000000009092169190911790558501516080860151606087015160a088015161198b93929190612280565b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405190915084907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b906119f090841515815260200190565b60405180910390a280158015611a065750326001145b15611a93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f6400000000000000000000000000000000000000000000000000000000000000606482015260840161064b565b5050505050565b6000611aa782601061515c565b6110ce9061520861518c565b600054600290610100900460ff16158015611ad5575060005460ff8083169116105b611b61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161064b565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001660ff831617610100908117909155603280547fffffffffffffffffffffffff000000000000000000000000000000000000000090811661dead17909155603580546036805473ffffffffffffffffffffffffffffffffffffffff89811691861691909117909155603780548a83169516949094179093558515159289169093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00167fffffffffffffffffffffff00000000000000000000000000000000000000000090931692909217179055611c5c6122de565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905560405160ff821681527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b600154600090611cf7907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16436151b8565b90506000611d036123c1565b90506000816020015160ff16826000015163ffffffff16611d2491906151fe565b90508215611e5b57600154600090611d5b908390700100000000000000000000000000000000900467ffffffffffffffff16615266565b90506000836040015160ff1683611d7291906152da565b600154611d929084906fffffffffffffffffffffffffffffffff166152da565b611d9c91906151fe565b600154909150600090611ded90611dc69084906fffffffffffffffffffffffffffffffff16615396565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612487565b90506001861115611e1c57611e19611dc682876040015160ff1660018a611e1491906151b8565b6124a6565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090611e8e908490700100000000000000000000000000000000900467ffffffffffffffff1661518c565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315611f71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f5265736f757263654d65746572696e673a2063616e6e6f7420627579206d6f7260448201527f6520676173207468616e20617661696c61626c6520676173206c696d69740000606482015260840161064b565b600154600090611f9d906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661540a565b90506000611faf48633b9aca006124fb565b611fb99083615447565b905060005a611fc890886151b8565b905080821115611fe457611fe4611fdf82846151b8565b612512565b5050505050505050565b6000816000015182602001518360400151846060015160405160200161202d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761202d97909695910161545b565b60008061208686612540565b905061209481868686612572565b9695505050505050565b6060816000036120e157505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561210b57806120f5816154b2565b91506121049050600a83615447565b91506120e5565b60008167ffffffffffffffff81111561212657612126614a16565b6040519080825280601f01601f191660200182016040528015612150576020820181803683370190505b5090505b84156121d3576121656001836151b8565b9150612172600a866154ea565b61217d9060306154fe565b60f81b81838151811061219257612192615516565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506121cc600a86615447565b9450612154565b949350505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f4daa2916040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226e9190615114565b61227890836154fe565b421192915050565b60008060006122908660006125a2565b9050806122c6576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b600054610100900460ff16612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161064b565b60408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260365483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa15801561245e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612482919061556a565b905090565b600061249c61249685856125c0565b836125d0565b90505b9392505050565b6000670de0b6b3a76400006124e76124be85836151fe565b6124d090670de0b6b3a7640000615266565b6124e285670de0b6b3a76400006152da565b6125df565b6124f190866152da565b61249c91906151fe565b60008183101561250b578161249f565b5090919050565b6000805a90505b825a61252590836151b8565b101561253b57612534826154b2565b9150612519565b505050565b6060818051906020012060405160200161255c91815260200190565b6040516020818303038152906040529050919050565b600061259984612583878686612610565b8051602091820120825192909101919091201490565b95945050505050565b600080603f83619c4001026040850201603f5a021015949350505050565b60008183121561250b578161249f565b600081831261250b578161249f565b600061249f670de0b6b3a7640000836125f78661308e565b61260191906152da565b61260b91906151fe565b6132d2565b6060600084511161267d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b65790000000000000000000000604482015260640161064b565b600061268884613511565b90506000612695866135fd565b90506000846040516020016126ac91815260200190565b60405160208183030381529060405290506000805b84518110156130055760008582815181106126de576126de615516565b602002602001015190508451831115612779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e677468000000000000000000000000000000000000606482015260840161064b565b8260000361283257805180516020918201206040516127c7926127a192910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f742068617368000000604482015260640161064b565b612989565b8051516020116128e8578051805160209182012060405161285c926127a192910190815260200190565b61282d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c206861736800000000000000000000000000000000000000000000000000606482015260840161064b565b805184516020808701919091208251919092012014612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f6520686173680000000000000000000000000000000000000000000000000000606482015260840161064b565b612995601060016154fe565b81602001515103612b715784518303612b09576129cf81602001516010815181106129c2576129c2615516565b6020026020010151613660565b96506000875111612a62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e6368290000000000606482015260840161064b565b60018651612a7091906151b8565b8214612afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e636829000000000000606482015260840161064b565b50505050505061249f565b6000858481518110612b1d57612b1d615516565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110612b4857612b48615516565b60200260200101519050612b5b816137c0565b9550612b686001866154fe565b94505050612ff2565b600281602001515103612f6a576000612b89826137e5565b9050600081600081518110612ba057612ba0615516565b016020015160f81c90506000612bb7600283615609565b612bc290600261562b565b90506000612bd3848360ff16613809565b90506000612be18a89613809565b90506000612bef838361383f565b905080835114612c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b6579000000000000606482015260840161064b565b60ff851660021480612c96575060ff85166003145b15612e855780825114612d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e646572000000606482015260840161064b565b612d4587602001516001815181106129c2576129c2615516565b9c5060008d5111612dd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c6561662900000000000000606482015260840161064b565b60018c51612de691906151b8565b8814612e74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c656166290000000000000000606482015260840161064b565b50505050505050505050505061249f565b60ff85161580612e98575060ff85166001145b15612ed757612ec48760200151600181518110612eb757612eb7615516565b60200260200101516137c0565b9950612ed0818a6154fe565b9850612f5f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e207072656669780000000000000000000000000000606482015260840161064b565b505050505050612ff2565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f6465000000000000000000000000000000000000000000000000606482015260840161064b565b5080612ffd816154b2565b9150506126c1565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e7473000000000000000000000000000000000000000000000000000000606482015260840161064b565b60008082136130f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161064b565b60006060613106846138f3565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361330357506000919050565b680755bf798b4a1bf1e58212613375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f570000000000000000000000000000000000000000604482015260640161064b565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b80516060908067ffffffffffffffff81111561352f5761352f614a16565b60405190808252806020026020018201604052801561357457816020015b604080518082019091526060808252602082015281526020019060019003908161354d5790505b50915060005b818110156135f657604051806040016040528085838151811061359f5761359f615516565b602002602001015181526020016135ce8684815181106135c1576135c1615516565b60200260200101516139c9565b8152508382815181106135e3576135e3615516565b602090810291909101015260010161357a565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613655578060011b82018184015160001a8060041c8253600f811660018301535050600101613627565b509295945050505050565b60606000806000613670856139dc565b91945092509050600081600181111561368b5761368b61564e565b14613718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d00000000000000606482015260840161064b565b61372282846154fe565b8551146137b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527f616e20696e76616c69642072656d61696e646572000000000000000000000000606482015260840161064b565b61259985602001518484614449565b606060208260000151106137dc576137d782613660565b6110ce565b6110ce826144dd565b60606110ce61380483602001516000815181106129c2576129c2615516565b6135fd565b60608251821061382857506040805160208101909152600081526110ce565b61249f838384865161383a91906151b8565b6144f3565b6000808251845110613852578251613855565b83515b90505b80821080156138dc575082828151811061387457613874615516565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168483815181106138b3576138b3615516565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b156138ec57816001019150613858565b5092915050565b600080821161395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e45440000000000000000000000000000000000000000000000604482015260640161064b565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60606110ce6139d7836146cb565b6147b4565b600080600080846000015111613a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161064b565b6020840151805160001a607f8111613abf576000600160009450945094505050614442565b60b78111613ccd576000613ad46080836151b8565b905080876000015111613b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604e60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201527f2873686f727420737472696e6729000000000000000000000000000000000000608482015260a40161064b565b6001838101517fff00000000000000000000000000000000000000000000000000000000000000169082141580613c0857507f80000000000000000000000000000000000000000000000000000000000000007fff00000000000000000000000000000000000000000000000000000000000000821610155b613cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201527f73686f727420737472696e672900000000000000000000000000000000000000608482015260a40161064b565b5060019550935060009250614442915050565b60bf811161401b576000613ce260b7836151b8565b905080876000015111613d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605160248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527f67746820286c6f6e6720737472696e6729000000000000000000000000000000608482015260a40161064b565b60018301517fff00000000000000000000000000000000000000000000000000000000000000166000819003613e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e6720737472696e672900000000000000000000000000000000000000000000608482015260a40161064b565b600184015160088302610100031c60378111613f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f20737472696e6729000000000000000000000000000000000000000000000000608482015260a40161064b565b613f4981846154fe565b895111613ffe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e6720737472696e67290000000000000000000000000000000000000000608482015260a40161064b565b6140098360016154fe565b97509550600094506144429350505050565b60f781116140fc57600061403060c0836151b8565b9050808760000151116140eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e206c697374206c656e67746820287360648201527f686f7274206c6973742900000000000000000000000000000000000000000000608482015260a40161064b565b600195509350849250614442915050565b600061410960f7836151b8565b9050808760000151116141c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201527f6820286c6f6e67206c6973742900000000000000000000000000000000000000608482015260a40161064b565b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036142a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604860248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f60648201527f6e67206c69737429000000000000000000000000000000000000000000000000608482015260a40161064b565b600184015160088302610100031c60378111614366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604660248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201527f206c697374290000000000000000000000000000000000000000000000000000608482015260a40161064b565b61437081846154fe565b895111614425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620636f6e74656e74206d757360448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201527f6c6f6e67206c6973742900000000000000000000000000000000000000000000608482015260a40161064b565b6144308360016154fe565b97509550600194506144429350505050565b9193909250565b60608167ffffffffffffffff81111561446457614464614a16565b6040519080825280601f01601f19166020018201604052801561448e576020820181803683370190505b509050811561249f5760006144a384866154fe565b90506020820160005b848110156144c45782810151828201526020016144ac565b848111156144d3576000858301525b5050509392505050565b60606110ce826020015160008460000151614449565b60608182601f011015614562576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161064b565b8282840110156145ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161064b565b8183018451101561463b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161064b565b60608215801561465a57604051915060008252602082016040526146c2565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561469357805183526020928301920161467b565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b60408051808201909152600080825260208201526000825111614796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604a60248201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60448201527f206d7573742062652067726561746572207468616e207a65726f20746f20626560648201527f206465636f6461626c6500000000000000000000000000000000000000000000608482015260a40161064b565b50604080518082019091528151815260209182019181019190915290565b606060008060006147c4856139dc565b9194509250905060018160018111156147df576147df61564e565b1461486c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d0000000000000000606482015260840161064b565b845161487883856154fe565b14614905576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e766160448201527f6c696420646174612072656d61696e6465720000000000000000000000000000606482015260840161064b565b604080516020808252610420820190925290816020015b604080518082019091526000808252602082015281526020019060019003908161491c5790505093506000835b8651811015614a0a5760008061498f6040518060400160405280858c6000015161497391906151b8565b8152602001858c6020015161498891906154fe565b90526139dc565b5091509150604051806040016040528083836149ab91906154fe565b8152602001848b602001516149c091906154fe565b8152508885815181106149d5576149d5615516565b60209081029190910101526149eb6001856154fe565b93506149f781836154fe565b614a0190846154fe565b92505050614949565b50845250919392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614a8c57614a8c614a16565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614ab657600080fd5b50565b600082601f830112614aca57600080fd5b813567ffffffffffffffff811115614ae457614ae4614a16565b614b1560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614a45565b818152846020838601011115614b2a57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614b5957600080fd5b60405160c0810167ffffffffffffffff8282108183111715614b7d57614b7d614a16565b816040528293508435835260208501359150614b9882614a94565b81602084015260408501359150614bae82614a94565b816040840152606085013560608401526080850135608084015260a0850135915080821115614bdc57600080fd5b50614be985828601614ab9565b60a0830152505092915050565b600080600080600085870360e0811215614c0f57600080fd5b863567ffffffffffffffff80821115614c2757600080fd5b614c338a838b01614b47565b97506020890135965060807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc084011215614c6c57600080fd5b60408901955060c0890135925080831115614c8657600080fd5b828901925089601f840112614c9a57600080fd5b8235915080821115614cab57600080fd5b508860208260051b8401011115614cc157600080fd5b959894975092955050506020019190565b60005b83811015614ced578181015183820152602001614cd5565b83811115614cfc576000848401525b50505050565b60008151808452614d1a816020860160208601614cd2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061249f6020830184614d02565b600060208284031215614d7157600080fd5b5035919050565b600060208284031215614d8a57600080fd5b813567ffffffffffffffff811115614da157600080fd5b6121d384828501614b47565b803567ffffffffffffffff81168114614dc557600080fd5b919050565b600060208284031215614ddc57600080fd5b61249f82614dad565b80358015158114614dc557600080fd5b600080600080600060a08688031215614e0d57600080fd5b8535614e1881614a94565b945060208601359350614e2d60408701614dad565b9250614e3b60608701614de5565b9150608086013567ffffffffffffffff811115614e5757600080fd5b614e6388828901614ab9565b9150509295509295909350565b60008060008060808587031215614e8657600080fd5b8435614e9181614a94565b93506020850135614ea181614a94565b92506040850135614eb181614a94565b9150614ebf60608601614de5565b905092959194509250565b8581528460208201527fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b16604082015282151560f81b604882015260008251614f1e816049850160208701614cd2565b919091016049019695505050505050565b80516fffffffffffffffffffffffffffffffff81168114614dc557600080fd5b600060608284031215614f6157600080fd5b6040516060810181811067ffffffffffffffff82111715614f8457614f84614a16565b60405282518152614f9760208401614f2f565b6020820152614fa860408401614f2f565b60408201529392505050565b600060808284031215614fc657600080fd5b6040516080810181811067ffffffffffffffff82111715614fe957614fe9614a16565b8060405250823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b600067ffffffffffffffff8084111561503557615035614a16565b8360051b6020615046818301614a45565b86815291850191818101903684111561505e57600080fd5b865b84811015615092578035868111156150785760008081fd5b61508436828b01614ab9565b845250918301918301615060565b50979650505050505050565b600084516150b0818460208901614cd2565b80830190507f2e0000000000000000000000000000000000000000000000000000000000000080825285516150ec816001850160208a01614cd2565b60019201918201528351615107816002840160208801614cd2565b0160020195945050505050565b60006020828403121561512657600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818516818304811182151516156151835761518361512d565b02949350505050565b600067ffffffffffffffff8083168185168083038211156151af576151af61512d565b01949350505050565b6000828210156151ca576151ca61512d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261520d5761520d6151cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83147f8000000000000000000000000000000000000000000000000000000000000000831416156152615761526161512d565b500590565b6000808312837f8000000000000000000000000000000000000000000000000000000000000000018312811516156152a0576152a061512d565b837f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0183138116156152d4576152d461512d565b50500390565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60008413600084138583048511828216161561531b5761531b61512d565b7f800000000000000000000000000000000000000000000000000000000000000060008712868205881281841616156153565761535661512d565b600087129250878205871284841616156153725761537261512d565b878505871281841616156153885761538861512d565b505050929093029392505050565b6000808212827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038413811516156153d0576153d061512d565b827f80000000000000000000000000000000000000000000000000000000000000000384128116156154045761540461512d565b50500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154425761544261512d565b500290565b600082615456576154566151cf565b500490565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a08301526154a660c0830184614d02565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036154e3576154e361512d565b5060010190565b6000826154f9576154f96151cf565b500690565b600082198211156155115761551161512d565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805163ffffffff81168114614dc557600080fd5b805160ff81168114614dc557600080fd5b600060c0828403121561557c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561559f5761559f614a16565b6040526155ab83615545565b81526155b960208401615559565b60208201526155ca60408401615559565b60408201526155db60608401615545565b60608201526155ec60808401615545565b60808201526155fd60a08401614f2f565b60a08201529392505050565b600060ff83168061561c5761561c6151cf565b8060ff84160691505092915050565b600060ff821660ff8416808210156156455761564561512d565b90039392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfea164736f6c634300080f000a"
func init() { func init() {
if err := json.Unmarshal([]byte(OptimismPortalStorageLayoutJSON), OptimismPortalStorageLayout); err != nil { if err := json.Unmarshal([]byte(OptimismPortalStorageLayoutJSON), OptimismPortalStorageLayout); err != nil {
......
...@@ -63,9 +63,9 @@ ...@@ -63,9 +63,9 @@
| finalizedWithdrawals | mapping(bytes32 => bool) | 51 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal | | finalizedWithdrawals | mapping(bytes32 => bool) | 51 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal |
| provenWithdrawals | mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal) | 52 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal | | provenWithdrawals | mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal) | 52 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal |
| paused | bool | 53 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal | | paused | bool | 53 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal |
| $l2Oracle | contract L2OutputOracle | 53 | 1 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | l2Oracle | contract L2OutputOracle | 53 | 1 | 20 | src/L1/OptimismPortal.sol:OptimismPortal |
| $systemConfig | contract SystemConfig | 54 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | systemConfig | contract SystemConfig | 54 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal |
| $guardian | address | 55 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | guardian | address | 55 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal |
======================= =======================
➡ src/L1/SystemConfig.sol:SystemConfig ➡ src/L1/SystemConfig.sol:SystemConfig
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"src/L1/L1ERC721Bridge.sol": "0xac9d8e236a1b35c358f9800834f65375cf4270155e817cf3d0f2bac1968f9107", "src/L1/L1ERC721Bridge.sol": "0xac9d8e236a1b35c358f9800834f65375cf4270155e817cf3d0f2bac1968f9107",
"src/L1/L1StandardBridge.sol": "0x26fd79e041c403f4bc68758c410fcc801975e7648c0b51a2c4a6e8c44fabcbfd", "src/L1/L1StandardBridge.sol": "0x26fd79e041c403f4bc68758c410fcc801975e7648c0b51a2c4a6e8c44fabcbfd",
"src/L1/L2OutputOracle.sol": "0xd6c5eb38732077c4705f46a61be68a7beccc069a99ed1d07b8e1fc6e1de8ffa6", "src/L1/L2OutputOracle.sol": "0xd6c5eb38732077c4705f46a61be68a7beccc069a99ed1d07b8e1fc6e1de8ffa6",
"src/L1/OptimismPortal.sol": "0xaec3d476e2b892a56a7214aa1cceb33584457fd5f68c66730bb7cf27ddc7b57b", "src/L1/OptimismPortal.sol": "0xb3652b69895ef7ab6da489ba57ee9b213cf4e2939cdf3b8d40a39a9fac13d31e",
"src/L1/SystemConfig.sol": "0x8e2b5103d2eb93b74af2e2f96a4505e637cdc3c44d80cf5ec2eca70060e1deff", "src/L1/SystemConfig.sol": "0x8e2b5103d2eb93b74af2e2f96a4505e637cdc3c44d80cf5ec2eca70060e1deff",
"src/L2/BaseFeeVault.sol": "0xa596e60762f16192cfa86459fcb9f4da9d8f756106eedac643a1ffeafbbfcc5f", "src/L2/BaseFeeVault.sol": "0xa596e60762f16192cfa86459fcb9f4da9d8f756106eedac643a1ffeafbbfcc5f",
"src/L2/GasPriceOracle.sol": "0xc735a8bf01ad8bca194345748537bfd9924909c0342bc133c4a31e2fb8cb9882", "src/L2/GasPriceOracle.sol": "0xc735a8bf01ad8bca194345748537bfd9924909c0342bc133c4a31e2fb8cb9882",
......
...@@ -53,15 +53,15 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -53,15 +53,15 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
/// @notice Address of the L2OutputOracle contract. /// @notice Address of the L2OutputOracle contract.
/// @custom:network-specific /// @custom:network-specific
L2OutputOracle internal $l2Oracle; L2OutputOracle public l2Oracle;
/// @notice Address of the SystemConfig contract. /// @notice Address of the SystemConfig contract.
/// @custom:network-specific /// @custom:network-specific
SystemConfig internal $systemConfig; SystemConfig public systemConfig;
/// @notice Address that has the ability to pause and unpause withdrawals. /// @notice Address that has the ability to pause and unpause withdrawals.
/// @custom:network-specific /// @custom:network-specific
address internal $guardian; address public guardian;
/// @notice Emitted when a transaction is deposited from L1 to L2. /// @notice Emitted when a transaction is deposited from L1 to L2.
/// The parameters of this event are read by the rollup node and used to derive deposit /// The parameters of this event are read by the rollup node and used to derive deposit
...@@ -129,9 +129,9 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -129,9 +129,9 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
bool _paused bool _paused
) public reinitializer(2) { ) public reinitializer(2) {
l2Sender = Constants.DEFAULT_L2_SENDER; l2Sender = Constants.DEFAULT_L2_SENDER;
$l2Oracle = _l2Oracle; l2Oracle = _l2Oracle;
$systemConfig = _systemConfig; systemConfig = _systemConfig;
$guardian = _guardian; guardian = _guardian;
paused = _paused; paused = _paused;
__ResourceMetering_init(); __ResourceMetering_init();
} }
...@@ -139,46 +139,31 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -139,46 +139,31 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
/// @notice Getter for the L2OutputOracle /// @notice Getter for the L2OutputOracle
/// @custom:legacy /// @custom:legacy
function L2_ORACLE() external view returns (L2OutputOracle) { function L2_ORACLE() external view returns (L2OutputOracle) {
return $l2Oracle; return l2Oracle;
}
/// @notice Getter for the L2OutputOracle
function l2Oracle() external view returns (L2OutputOracle) {
return $l2Oracle;
} }
/// @notice Getter for the SystemConfig /// @notice Getter for the SystemConfig
/// @custom:legacy /// @custom:legacy
function SYSTEM_CONFIG() external view returns (SystemConfig) { function SYSTEM_CONFIG() external view returns (SystemConfig) {
return $systemConfig; return systemConfig;
}
/// @notice Getter for the SystemConfig
function systemConfig() external view returns (SystemConfig) {
return $systemConfig;
} }
/// @notice Getter for the Guardian /// @notice Getter for the Guardian
/// @custom:legacy /// @custom:legacy
function GUARDIAN() external view returns (address) { function GUARDIAN() external view returns (address) {
return $guardian; return guardian;
}
/// @notice Getter for the Guardian
function guardian() external view returns (address) {
return $guardian;
} }
/// @notice Pauses withdrawals. /// @notice Pauses withdrawals.
function pause() external { function pause() external {
require(msg.sender == $guardian, "OptimismPortal: only guardian can pause"); require(msg.sender == guardian, "OptimismPortal: only guardian can pause");
paused = true; paused = true;
emit Paused(msg.sender); emit Paused(msg.sender);
} }
/// @notice Unpauses withdrawals. /// @notice Unpauses withdrawals.
function unpause() external { function unpause() external {
require(msg.sender == $guardian, "OptimismPortal: only guardian can unpause"); require(msg.sender == guardian, "OptimismPortal: only guardian can unpause");
paused = false; paused = false;
emit Unpaused(msg.sender); emit Unpaused(msg.sender);
} }
...@@ -220,7 +205,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -220,7 +205,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
override override
returns (ResourceMetering.ResourceConfig memory) returns (ResourceMetering.ResourceConfig memory)
{ {
return $systemConfig.resourceConfig(); return systemConfig.resourceConfig();
} }
/// @notice Proves a withdrawal transaction. /// @notice Proves a withdrawal transaction.
...@@ -244,7 +229,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -244,7 +229,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
// Get the output root and load onto the stack to prevent multiple mloads. This will // Get the output root and load onto the stack to prevent multiple mloads. This will
// revert if there is no output root for the given block number. // revert if there is no output root for the given block number.
bytes32 outputRoot = $l2Oracle.getL2Output(_l2OutputIndex).outputRoot; bytes32 outputRoot = l2Oracle.getL2Output(_l2OutputIndex).outputRoot;
// Verify that the output root can be generated with the elements in the proof. // Verify that the output root can be generated with the elements in the proof.
require( require(
...@@ -264,7 +249,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -264,7 +249,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
// output index has been updated. // output index has been updated.
require( require(
provenWithdrawal.timestamp == 0 || provenWithdrawal.timestamp == 0 ||
$l2Oracle.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot != l2Oracle.getL2Output(provenWithdrawal.l2OutputIndex).outputRoot !=
provenWithdrawal.outputRoot, provenWithdrawal.outputRoot,
"OptimismPortal: withdrawal hash has already been proven" "OptimismPortal: withdrawal hash has already been proven"
); );
...@@ -336,7 +321,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -336,7 +321,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
// starting timestamp inside the L2OutputOracle. Not strictly necessary but extra layer of // starting timestamp inside the L2OutputOracle. Not strictly necessary but extra layer of
// safety against weird bugs in the proving step. // safety against weird bugs in the proving step.
require( require(
provenWithdrawal.timestamp >= $l2Oracle.startingTimestamp(), provenWithdrawal.timestamp >= l2Oracle.startingTimestamp(),
"OptimismPortal: withdrawal timestamp less than L2 Oracle starting timestamp" "OptimismPortal: withdrawal timestamp less than L2 Oracle starting timestamp"
); );
...@@ -351,7 +336,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -351,7 +336,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
// Grab the OutputProposal from the L2OutputOracle, will revert if the output that // Grab the OutputProposal from the L2OutputOracle, will revert if the output that
// corresponds to the given index has not been proposed yet. // corresponds to the given index has not been proposed yet.
Types.OutputProposal memory proposal = $l2Oracle.getL2Output( Types.OutputProposal memory proposal = l2Oracle.getL2Output(
provenWithdrawal.l2OutputIndex provenWithdrawal.l2OutputIndex
); );
...@@ -471,7 +456,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -471,7 +456,7 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
/// @param _l2OutputIndex Index of the L2 output to check. /// @param _l2OutputIndex Index of the L2 output to check.
/// @return Whether or not the output is finalized. /// @return Whether or not the output is finalized.
function isOutputFinalized(uint256 _l2OutputIndex) external view returns (bool) { function isOutputFinalized(uint256 _l2OutputIndex) external view returns (bool) {
return _isFinalizationPeriodElapsed($l2Oracle.getL2Output(_l2OutputIndex).timestamp); return _isFinalizationPeriodElapsed(l2Oracle.getL2Output(_l2OutputIndex).timestamp);
} }
/// @notice Determines whether the finalization period has elapsed with respect to /// @notice Determines whether the finalization period has elapsed with respect to
...@@ -479,6 +464,6 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver { ...@@ -479,6 +464,6 @@ contract OptimismPortal is Initializable, ResourceMetering, Semver {
/// @param _timestamp Timestamp to check. /// @param _timestamp Timestamp to check.
/// @return Whether or not the finalization period has elapsed. /// @return Whether or not the finalization period has elapsed.
function _isFinalizationPeriodElapsed(uint256 _timestamp) internal view returns (bool) { function _isFinalizationPeriodElapsed(uint256 _timestamp) internal view returns (bool) {
return block.timestamp > _timestamp + $l2Oracle.FINALIZATION_PERIOD_SECONDS(); return block.timestamp > _timestamp + l2Oracle.FINALIZATION_PERIOD_SECONDS();
} }
} }
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