@tokamak-network/thanos-contracts
Version:
1 lines • 250 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"GUARDIAN","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"L2_ORACLE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CONFIG","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"depositTransaction","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_mint","type":"uint256","internalType":"uint256"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_gasLimit","type":"uint64","internalType":"uint64"},{"name":"_isCreation","type":"bool","internalType":"bool"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"donateETH","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"finalizeWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizedWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"guardian","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_l2Oracle","type":"address","internalType":"contract L2OutputOracle"},{"name":"_systemConfig","type":"address","internalType":"contract SystemConfig"},{"name":"_superchainConfig","type":"address","internalType":"contract SuperchainConfig"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isOutputFinalized","inputs":[{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"l2Oracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract L2OutputOracle"}],"stateMutability":"view"},{"type":"function","name":"l2Sender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"minimumGasLimit","inputs":[{"name":"_byteCount","type":"uint64","internalType":"uint64"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"nativeTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"onApprove","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"params","inputs":[],"outputs":[{"name":"prevBaseFee","type":"uint128","internalType":"uint128"},{"name":"prevBoughtGas","type":"uint64","internalType":"uint64"},{"name":"prevBlockNum","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"paused_","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proveWithdrawalTransaction","inputs":[{"name":"_tx","type":"tuple","internalType":"struct Types.WithdrawalTransaction","components":[{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"sender","type":"address","internalType":"address"},{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"gasLimit","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]},{"name":"_l2OutputIndex","type":"uint256","internalType":"uint256"},{"name":"_outputRootProof","type":"tuple","internalType":"struct Types.OutputRootProof","components":[{"name":"version","type":"bytes32","internalType":"bytes32"},{"name":"stateRoot","type":"bytes32","internalType":"bytes32"},{"name":"messagePasserStorageRoot","type":"bytes32","internalType":"bytes32"},{"name":"latestBlockhash","type":"bytes32","internalType":"bytes32"}]},{"name":"_withdrawalProof","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"provenWithdrawals","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"outputRoot","type":"bytes32","internalType":"bytes32"},{"name":"timestamp","type":"uint128","internalType":"uint128"},{"name":"l2OutputIndex","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"setConfig","inputs":[{"name":"_type","type":"uint8","internalType":"enum ConfigType"},{"name":"_value","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"spacer_native_token_address","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"superchainConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SuperchainConfig"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"pure"},{"type":"function","name":"systemConfig","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract SystemConfig"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"pure"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"TransactionDeposited","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"version","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"opaqueData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"WithdrawalFinalized","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"success","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"WithdrawalProven","inputs":[{"name":"withdrawalHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"ContentLengthMismatch","inputs":[]},{"type":"error","name":"EmptyItem","inputs":[]},{"type":"error","name":"InvalidDataRemainder","inputs":[]},{"type":"error","name":"InvalidHeader","inputs":[]},{"type":"error","name":"OutOfGas","inputs":[]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnexpectedList","inputs":[]},{"type":"error","name":"UnexpectedString","inputs":[]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b50620000206000808062000026565b6200028f565b600054610100900460ff1615808015620000475750600054600160ff909116105b806200007757506200006430620001c160201b62001fd41760201c565b15801562000077575060005460ff166001145b620000e05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000104576000805461ff0019166101001790555b603680546001600160a01b03199081166001600160a01b03878116919091179092556037805490911685831617905560358054610100600160a81b03191661010085841602179055603254166200016a57603280546001600160a01b03191661dead1790555b62000174620001d0565b8015620001bb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6001600160a01b03163b151590565b600054610100900460ff166200023d5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000d7565b600154600160c01b90046001600160401b03166000036200028d5760408051606081018252633b9aca0080825260006020830152436001600160401b031691909201819052600160c01b02176001555b565b615b69806200029f6000396000f3fe6080604052600436106101995760003560e01c80638b4c40b0116100e1578063b7d823741161008a578063c0c53b8b11610064578063c0c53b8b14610512578063cff0ab9614610532578063e965084c146105d3578063f04987501461065f57600080fd5b8063b7d82374146104a5578063b9e55958146104d2578063c0012163146104f257600080fd5b80639bf62d82116100bb5780639bf62d821461040f578063a14238e71461043c578063a35d99df1461046c57600080fd5b80638b4c40b01461033f5780638c3152e9146103c25780639b5f694a146103e257600080fd5b80634870496f116101435780635c975abb1161011d5780635c975abb146103785780636dbffb781461038d578063724c184c146103ad57600080fd5b80634870496f1461031f5780634d0047ee1461034157806354fd4d501461035657600080fd5b806335e80ab31161017457806335e80ab3146102b85780634273ca16146102ea578063452a93201461030a57600080fd5b80621c2ff61461020a57806301ffc9a71461025b57806333d7e2bd1461028b57600080fd5b36610205576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4f6e6c7920616c6c6f77206e617469766520746f6b656e00000000000000000060448201526064015b60405180910390fd5b600080fd5b34801561021657600080fd5b5060365473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561026757600080fd5b5061027b610276366004614ce8565b61068a565b6040519015158152602001610252565b34801561029757600080fd5b506037546102319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102c457600080fd5b5060355461023190610100900473ffffffffffffffffffffffffffffffffffffffff1681565b3480156102f657600080fd5b5061027b610305366004614d98565b610723565b34801561031657600080fd5b506102316107b4565b34801561032b57600080fd5b5061033f61033a366004614fc6565b61084c565b005b34801561034d57600080fd5b50610231610e7a565b34801561036257600080fd5b5061036b610e84565b6040516102529190615118565b34801561038457600080fd5b5061027b610ee4565b34801561039957600080fd5b5061027b6103a836600461512b565b610f77565b3480156103b957600080fd5b5061023161102c565b3480156103ce57600080fd5b5061033f6103dd366004615144565b611038565b3480156103ee57600080fd5b506036546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041b57600080fd5b506032546102319073ffffffffffffffffffffffffffffffffffffffff1681565b34801561044857600080fd5b5061027b61045736600461512b565b60336020526000908152604090205460ff1681565b34801561047857600080fd5b5061048c61048736600461519e565b611b8e565b60405167ffffffffffffffff9091168152602001610252565b3480156104b157600080fd5b50603e546102319073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104de57600080fd5b5061033f6104ed3660046151c7565b611ba7565b3480156104fe57600080fd5b5061033f61050d366004615254565b611bc2565b34801561051e57600080fd5b5061033f61052d3660046152a8565b611d86565b34801561053e57600080fd5b5060015461059a906fffffffffffffffffffffffffffffffff81169067ffffffffffffffff7001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041683565b604080516fffffffffffffffffffffffffffffffff909416845267ffffffffffffffff9283166020850152911690820152606001610252565b3480156105df57600080fd5b506106316105ee36600461512b565b603460205260009081526040902080546001909101546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041683565b604080519384526fffffffffffffffffffffffffffffffff9283166020850152911690820152606001610252565b34801561066b57600080fd5b5060375473ffffffffffffffffffffffffffffffffffffffff16610231565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4273ca1600000000000000000000000000000000000000000000000000000000148061071d57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6000806000803660006107368888611ff0565b945094509450945094506107486120a6565b73ffffffffffffffffffffffffffffffffffffffff1633036107a1576107938b868b8763ffffffff881673ffffffffffffffffffffffffffffffffffffffff84161588886001612116565b6001955050505050506107ab565b6000955050505050505b95945050505050565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663452a93206040518163ffffffff1660e01b8152600401602060405180830381865afa158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906152f3565b905090565b610854610ee4565b156108bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016101fc565b3073ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff160361097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a20796f752063616e6e6f742073656e642060448201527f6d6573736167657320746f2074686520706f7274616c20636f6e74726163740060648201526084016101fc565b6036546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810186905260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0e9190615330565b519050610a28610a2336869003860186615395565b61240e565b8114610ab6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4f7074696d69736d506f7274616c3a20696e76616c6964206f7574707574207260448201527f6f6f742070726f6f66000000000000000000000000000000000000000000000060648201526084016101fc565b6000610ac18761246a565b6000818152603460209081526040918290208251606081018452815481526001909101546fffffffffffffffffffffffffffffffff8082169383018490527001000000000000000000000000000000009091041692810192909252919250901580610bd75750805160365460408084015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190615330565b5114155b610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173682060448201527f68617320616c7265616479206265656e2070726f76656e00000000000000000060648201526084016101fc565b60408051602081018490526000918101829052606001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083018190529250610d2c9101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600182527f0100000000000000000000000000000000000000000000000000000000000000602083015290610d22888a6153fb565b8a6040013561249a565b610db8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a20696e76616c696420776974686472617760448201527f616c20696e636c7573696f6e2070726f6f66000000000000000000000000000060648201526084016101fc565b604080516060810182528581526fffffffffffffffffffffffffffffffff42811660208084019182528c831684860190815260008981526034835286812095518655925190518416700100000000000000000000000000000000029316929092176001909301929092558b830151908c0151925173ffffffffffffffffffffffffffffffffffffffff918216939091169186917f67a6208cfcc0801d50f6cbe764733f4fddf66ac0b04442061a8a8c0cb6b63f629190a4505050505050505050565b60006108476120a6565b6060610ec060408051808201909152600c81527f322e382e312d626574612e310000000000000000000000000000000000000000602082015290565b604051602001610ed0919061547f565b604051602081830303815290604052905090565b6000603560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f53573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906154c0565b6036546040517fa25ae5570000000000000000000000000000000000000000000000000000000081526004810183905260009161071d9173ffffffffffffffffffffffffffffffffffffffff9091169063a25ae55790602401606060405180830381865afa158015610fed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110119190615330565b602001516fffffffffffffffffffffffffffffffff166124be565b60006108476107b4565b565b611040610ee4565b156110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f7074696d69736d506f7274616c3a207061757365640000000000000000000060448201526064016101fc565b60325473ffffffffffffffffffffffffffffffffffffffff1661dead14611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603f60248201527f4f7074696d69736d506f7274616c3a2063616e206f6e6c79207472696767657260448201527f206f6e65207769746864726177616c20706572207472616e73616374696f6e0060648201526084016101fc565b600061115b8261246a565b60008181526034602090815260408083208151606081018352815481526001909101546fffffffffffffffffffffffffffffffff80821694830185905270010000000000000000000000000000000090910416918101919091529293509003611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206e60448201527f6f74206265656e2070726f76656e20796574000000000000000000000000000060648201526084016101fc565b603660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663887862726040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d791906154dd565b81602001516fffffffffffffffffffffffffffffffff1610156113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604b60248201527f4f7074696d69736d506f7274616c3a207769746864726177616c2074696d657360448201527f74616d70206c657373207468616e204c32204f7261636c65207374617274696e60648201527f672074696d657374616d70000000000000000000000000000000000000000000608482015260a4016101fc565b6113c181602001516fffffffffffffffffffffffffffffffff166124be565b611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4f7074696d69736d506f7274616c3a2070726f76656e2077697468647261776160448201527f6c2066696e616c697a6174696f6e20706572696f6420686173206e6f7420656c60648201527f6170736564000000000000000000000000000000000000000000000000000000608482015260a4016101fc565b60365460408281015190517fa25ae5570000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015260009173ffffffffffffffffffffffffffffffffffffffff169063a25ae55790602401606060405180830381865afa1580156114fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151e9190615330565b82518151919250146115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604960248201527f4f7074696d69736d506f7274616c3a206f757470757420726f6f742070726f7660448201527f656e206973206e6f74207468652073616d652061732063757272656e74206f7560648201527f7470757420726f6f740000000000000000000000000000000000000000000000608482015260a4016101fc565b6115f781602001516fffffffffffffffffffffffffffffffff166124be565b6116a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d506f7274616c3a206f75747075742070726f706f73616c2060448201527f66696e616c697a6174696f6e20706572696f6420686173206e6f7420656c617060648201527f7365640000000000000000000000000000000000000000000000000000000000608482015260a4016101fc565b60008381526033602052604090205460ff1615611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4f7074696d69736d506f7274616c3a207769746864726177616c20686173206160448201527f6c7265616479206265656e2066696e616c697a6564000000000000000000000060648201526084016101fc565b60006117526120a6565b6000858152603360205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905586015190915073ffffffffffffffffffffffffffffffffffffffff80831691160361185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f7074696d69736d20506f7274616c3a2063616e6e6f74206d616b652061206460448201527f69726563742063616c6c20746f206e617469766520746f6b656e20636f6e747260648201527f6163740000000000000000000000000000000000000000000000000000000000608482015260a4016101fc565b6020850151603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9092169190911790556060850151156119915760a0850151511561196657604080860151606087015191517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481019290925282169063095ea7b3906044016020604051808303816000875af115801561193c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196091906154c0565b50611991565b604085015160608601516119919173ffffffffffffffffffffffffffffffffffffffff841691612564565b60008560a00151516000146119c0576119b98660400151876080015160008960a0015161263d565b90506119c4565b5060015b60a086015151158015906119db5750606086015115155b15611a815760408681015190517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600060248201529083169063095ea7b3906044016020604051808303816000875af1158015611a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a7f91906154c0565b505b603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905560405185907fdb5c7652857aa163daadd670e116628fb42e869d8ac4251ef8971d9e5727df1b90611ae390841515815260200190565b60405180910390a280158015611af95750326001145b15611b86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f7074696d69736d506f7274616c3a207769746864726177616c206661696c6560448201527f640000000000000000000000000000000000000000000000000000000000000060648201526084016101fc565b505050505050565b6000611b9b826010615525565b61071d90615208615555565b611bb933888888888888886000612116565b50505050505050565b60375473ffffffffffffffffffffffffffffffffffffffff163314611c13576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611c1f62030d4061269b565b600073420000000000000000000000000000000000001573ffffffffffffffffffffffffffffffffffffffff1673deaddeaddeaddeaddeaddeaddeaddeaddead000173ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c3260008062030d4063ffffffff1660008989604051602401611cba9291906155b0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc0012163000000000000000000000000000000000000000000000000000000001790529051611d4296959493929101615600565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d7a91615118565b60405180910390a45050565b600054610100900460ff1615808015611da65750600054600160ff909116105b80611dc05750303b158015611dc0575060005460ff166001145b611e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101fc565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611eaa57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8781169190911790925560378054909116858316179055603580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008584160217905560325416611f6357603280547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b611f6b6126fd565b8015611fce57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000808036816038861015612061576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f696e76616c6964206f6e417070726f766520646174610000000000000000000060448201526064016101fc565b505050833560601c94601485013594603481013560e01c94603890910193507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8019150565b603754604080517f4d0047ee000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691634d0047ee9160048083019260209291908290030181865afa158015610823573d6000803e3d6000fd5b8460005a905060006121266120a6565b905089156121505761215073ffffffffffffffffffffffffffffffffffffffff82168d308d612810565b86156121fc5773ffffffffffffffffffffffffffffffffffffffff8b16156121fc57604080517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482015260248101919091527f4f7074696d69736d506f7274616c3a206d7573742073656e6420746f2061646460448201527f72657373283029207768656e206372656174696e67206120636f6e747261637460648201526084016101fc565b61220585611b8e565b67ffffffffffffffff168867ffffffffffffffff1610156122a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f4f7074696d69736d506f7274616c3a20676173206c696d697420746f6f20736d60448201527f616c6c000000000000000000000000000000000000000000000000000000000060648201526084016101fc565b6201d4c0851115612315576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4f7074696d69736d506f7274616c3a206461746120746f6f206c61726765000060448201526064016101fc565b600073ffffffffffffffffffffffffffffffffffffffff8d16321480159061233b575084155b612345578c61235d565b7311110000000000000000000000000000000011118d015b905060008b8b8b8b8b8b60405160200161237c96959493929190615665565b604051602081830303815290604052905060008d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fb3813568d9991fc951961fcb4c784893574240a28925604d09fc577c55bb7c32846040516123ec9190615118565b60405180910390a4505050612401828261286e565b5050505050505050505050565b6000816000015182602001518360400151846060015160405160200161244d949392919093845260208401929092526040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b80516020808301516040808501516060860151608087015160a0880151935160009761244d9790969591016156be565b6000806124a686612b45565b90506124b481868686612b77565b9695505050505050565b603654604080517ff4daa291000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f4daa2919160048083019260209291908290030181865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061255291906154dd565b61255c9083615715565b421192915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526126389084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612b9e565b505050565b600080600061264d866000612caa565b905080612683576308c379a06000526020805278185361666543616c6c3a204e6f7420656e6f756768206761736058526064601cfd5b600080855160208701888b5af1979650505050505050565b6001805463ffffffff831691906010906126d4908490700100000000000000000000000000000000900467ffffffffffffffff16615555565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600054610100900460ff16612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016101fc565b6001547801000000000000000000000000000000000000000000000000900467ffffffffffffffff166000036110365760408051606081018252633b9aca00808252600060208301524367ffffffffffffffff169190920181905278010000000000000000000000000000000000000000000000000217600155565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611fce9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016125b6565b6001546000906128a4907801000000000000000000000000000000000000000000000000900467ffffffffffffffff164361572d565b905060006128b0612cc8565b90506000816020015160ff16826000015163ffffffff166128d19190615773565b90508215612a0857600154600090612908908390700100000000000000000000000000000000900467ffffffffffffffff166157db565b90506000836040015160ff168361291f919061584f565b60015461293f9084906fffffffffffffffffffffffffffffffff1661584f565b6129499190615773565b60015490915060009061299a906129739084906fffffffffffffffffffffffffffffffff1661590b565b866060015163ffffffff168760a001516fffffffffffffffffffffffffffffffff16612d89565b905060018611156129c9576129c661297382876040015160ff1660018a6129c1919061572d565b612da8565b90505b6fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff4316021760015550505b60018054869190601090612a3b908490700100000000000000000000000000000000900467ffffffffffffffff16615555565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550816000015163ffffffff16600160000160109054906101000a900467ffffffffffffffff1667ffffffffffffffff161315612ac8576040517f77ebef4d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600154600090612af4906fffffffffffffffffffffffffffffffff1667ffffffffffffffff881661597f565b90506000612b0648633b9aca00612dfd565b612b1090836159bc565b905060005a612b1f908861572d565b905080821115612b3b57612b3b612b36828461572d565b612e14565b5050505050505050565b60608180519060200120604051602001612b6191815260200190565b6040516020818303038152906040529050919050565b60006107ab84612b88878686612e3d565b8051602091820120825192909101919091201490565b6000612c00826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166138bb9092919063ffffffff16565b8051909150156126385780806020019051810190612c1e91906154c0565b612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101fc565b600080603f83619c4001026040850201603f5a021015949350505050565b6040805160c08082018352600080835260208301819052828401819052606083018190526080830181905260a083015260375483517fcc731b020000000000000000000000000000000000000000000000000000000081529351929373ffffffffffffffffffffffffffffffffffffffff9091169263cc731b02926004808401939192918290030181865afa158015612d65573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906159f5565b6000612d9e612d9885856138ca565b836138da565b90505b9392505050565b6000670de0b6b3a7640000612de9612dc08583615773565b612dd290670de0b6b3a76400006157db565b612de485670de0b6b3a764000061584f565b6138e9565b612df3908661584f565b612d9e9190615773565b600081831015612e0d5781612da1565b5090919050565b6000805a90505b825a612e27908361572d565b101561263857612e3682615a94565b9150612e1b565b60606000845111612eaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d65726b6c65547269653a20656d707479206b6579000000000000000000000060448201526064016101fc565b6000612eb58461391a565b90506000612ec286613a06565b9050600084604051602001612ed991815260200190565b60405160208183030381529060405290506000805b8451811015613832576000858281518110612f0b57612f0b615acc565b602002602001015190508451831115612fa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201527f74616c206b6579206c656e67746800000000000000000000000000000000000060648201526084016101fc565b8260000361305f5780518051602091820120604051612ff492612fce92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61305a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016101fc565b6131b6565b805151602011613115578051805160209182012060405161308992612fce92910190815260200190565b61305a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e60448201527f616c20686173680000000000000000000000000000000000000000000000000060648201526084016101fc565b8051845160208087019190912082519190920120146131b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f6460448201527f652068617368000000000000000000000000000000000000000000000000000060648201526084016101fc565b6131c260106001615715565b8160200151510361339e5784518303613336576131fc81602001516010815181106131ef576131ef615acc565b6020026020010151613a69565b9650600087511161328f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016101fc565b6001865161329d919061572d565b821461332b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016101fc565b505050505050612da1565b600085848151811061334a5761334a615acc565b602001015160f81c60f81b60f81c9050600082602001518260ff168151811061337557613375615acc565b6020026020010151905061338881613b1d565b9550613395600186615715565b9450505061381f565b6002816020015151036137975760006133b682613b42565b90506000816000815181106133cd576133cd615acc565b016020015160f81c905060006133e4600283615afb565b6133ef906002615b1d565b90506000613400848360ff16613b66565b9050600061340e8a89613b66565b9050600061341c8383613b9c565b9050808351146134ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016101fc565b60ff8516600214806134c3575060ff85166003145b156136b25780825114613558576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016101fc565b61357287602001516001815181106131ef576131ef615acc565b9c5060008d5111613605576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016101fc565b60018c51613613919061572d565b88146136a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016101fc565b505050505050505050505050612da1565b60ff851615806136c5575060ff85166001145b15613704576136f187602001516001815181106136e4576136e4615acc565b6020026020010151613b1d565b99506136fd818a615715565b985061378c565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f6465207769746860448201527f20616e20756e6b6e6f776e20707265666978000000000000000000000000000060648201526084016101fc565b50505050505061381f565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e70617273656160448201527f626c65206e6f646500000000000000000000000000000000000000000000000060648201526084016101fc565b508061382a81615a94565b915050612eee565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c6560448201527f6d656e747300000000000000000000000000000000000000000000000000000060648201526084016101fc565b6060612d9e8484600085613c50565b600081831215612e0d5781612da1565b6000818312612e0d5781612da1565b6000612da1670de0b6b3a76400008361390186613de6565b61390b919061584f565b6139159190615773565b61402a565b80516060908067ffffffffffffffff81111561393857613938614e0b565b60405190808252806020026020018201604052801561397d57816020015b60408051808201909152606080825260208201528152602001906001900390816139565790505b50915060005b818110156139ff5760405180604001604052808583815181106139a8576139a8615acc565b602002602001015181526020016139d78684815181106139ca576139ca615acc565b6020026020010151614269565b8152508382815181106139ec576139ec615acc565b6020908102919091010152600101613983565b5050919050565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015613a5e578060011b82018184015160001a8060041c8253600f811660018301535050600101613a30565b509295945050505050565b60606000806000613a798561427c565b919450925090506000816001811115613a9457613a94615581565b14613acb576040517f1ff9b2e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613ad58284615715565b855114613b0e576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107ab8560200151848461471a565b60606020826000015110613b3957613b3482613a69565b61071d565b61071d826147ae565b606061071d613b6183602001516000815181106131ef576131ef615acc565b613a06565b606082518210613b85575060408051602081019091526000815261071d565b612da18383848651613b97919061572d565b6147c4565b6000808251845110613baf578251613bb2565b83515b90505b8082108015613c395750828281518110613bd157613bd1615acc565b602001015160f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916848381518110613c1057613c10615acc565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016145b15613c4957816001019150613bb5565b5092915050565b606082471015613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101fc565b73ffffffffffffffffffffffffffffffffffffffff85163b613d60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101fc565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613d899190615b40565b60006040518083038185875af1925050503d8060008114613dc6576040519150601f19603f3d011682016040523d82523d6000602084013e613dcb565b606091505b5091509150613ddb82828661499c565b979650505050505050565b6000808213613e51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016101fc565b60006060613e5e846149ef565b03609f8181039490941b90931c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d7fffffffffffffffffffffffffffffffffffffff73c0c716a594e00d54e3c4cbc9018302821d7ffffffffffffffffffffffffffffffffffffffdc7b88c420e53a9890533129f6f01830290911d7fffffffffffffffffffffffffffffffffffffff465fda27eb4d63ded474e5f832019091027ffffffffffffffff5f6af8f7b3396644f18e157960000000000000000000000000105711340daa0d5f769dba1915cef59f0815a5506027d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b393909302929092017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d92915050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffdb731c958f34d94c1821361405b57506000919050565b680755bf798b4a1bf1e582126140cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4558505f4f564552464c4f57000000000000000000000000000000000000000060448201526064016101fc565b6503782dace9d9604e83901b059150600060606bb17217f7d1cf79abc9e3b39884821b056b80000000000000000000000001901d6bb17217f7d1cf79abc9e3b39881029093037fffffffffffffffffffffffffffffffffffffffdbf3ccf1604d263450f02a550481018102606090811d6d0277594991cfc85f6e2461837cd9018202811d7fffffffffffffffffffffffffffffffffffffe5adedaa1cb095af9e4da10e363c018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d7ffffffffffffffffffffffffffffffffffffd38dc772608b0ae56cce01296c0eb018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084017ffffffffffffffffffffffffffffffffffffffe2c69812cf03b0763fd454a8f7e010290911d6e0587f503bb6ea29d25fcb7401964500190910279d835ebba824c98fb31b83b2ca45c000000000000000000000000010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b606061071d61427783614ac5565b614b32565b600080600083600001516000036142bf576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020840151805160001a607f81116142e4576000600160009450945094505050614713565b60b781116143fa5760006142f960808361572d565b905080876000015111614338576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001838101517fff000000000000000000000000000000000000000000000000000000000000001690821480156143b057507f80000000000000000000000000000000000000000000000000000000000000007fff000000000000000000000000000000000000000000000000000000000000008216105b156143e7576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060019550935060009250614713915050565b60bf811161455857600061440f60b78361572d565b90508087600001511161444e576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff000000000000000000000000000000000000000000000000000000000000001660008190036144b0576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c603781116144f8576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6145028184615715565b89511161453b576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614546836001615715565b97509550600094506147139350505050565b60f781116145bd57600061456d60c08361572d565b9050808760000151116145ac576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600195509350849250614713915050565b60006145ca60f78361572d565b905080876000015111614609576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018301517fff0000000000000000000000000000000000000000000000000000000000000016600081900361466b576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600184015160088302610100031c603781116146b3576040517fbabb01dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6146bd8184615715565b8951116146f6576040517f66c9448500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614701836001615715565b97509550600194506147139350505050565b9193909250565b60608167ffffffffffffffff81111561473557614735614e0b565b6040519080825280601f01601f19166020018201604052801561475f576020820181803683370190505b5090508115612da15760006147748486615715565b90506020820160005b8481101561479557828101518282015260200161477d565b848111156147a4576000858301525b5050509392505050565b606061071d82602001516000846000015161471a565b60608182601f011015614833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101fc565b82828401101561489f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101fc565b8183018451101561490c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016101fc565b60608215801561492b5760405191506000825260208201604052614993565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561496457805183526020928301920161494c565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606083156149ab575081612da1565b8251156149bb5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fc9190615118565b6000808211614a5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f554e444546494e4544000000000000000000000000000000000000000000000060448201526064016101fc565b5060016fffffffffffffffffffffffffffffffff821160071b82811c67ffffffffffffffff1060061b1782811c63ffffffff1060051b1782811c61ffff1060041b1782811c60ff10600390811b90911783811c600f1060021b1783811c909110821b1791821c111790565b60408051808201909152600080825260208201528151600003614b14576040517f5ab458fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60606000806000614b428561427c565b919450925090506001816001811115614b5d57614b5d615581565b14614b94576040517f4b9c6abe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8451614ba08385615715565b14614bd7576040517f5c5537b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516020808252610420820190925290816020015b6040805180820190915260008082526020820152815260200190600190039081614bee5790505093506000835b8651811015614cdc57600080614c616040518060400160405280858c60000151614c45919061572d565b8152602001858c60200151614c5a9190615715565b905261427c565b509150915060405180604001604052808383614c7d9190615715565b8152602001848b60200151614c929190615715565b815250888581518110614ca757614ca7615acc565b6020908102919091010152614cbd600185615715565b9350614cc98183615715565b614cd39084615715565b92505050614c1b565b50845250919392505050565b600060208284031215614cfa57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612da157600080fd5b73ffffffffffffffffffffffffffffffffffffffff81168114614d4c57600080fd5b50565b60008083601f840112614d6157600080fd5b50813567ffffffffffffffff811115614d7957600080fd5b602083019150836020828501011115614d9157600080fd5b9250929050565b600080600080600060808688031215614db057600080fd5b8535614dbb81614d2a565b94506020860135614dcb81614d2a565b935060408601359250606086013567ffffffffffffffff811115614dee57600080fd5b614dfa88828901614d4f565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614e8157614e81614e0b565b604052919050565b600082601f830112614e9a57600080fd5b813567ffffffffffffffff811115614eb457614eb4614e0b565b614ee560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614e3a565b818152846020838601011115614efa57600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614f2957600080fd5b60405160c0810167ffffffffffffffff8282108183111715614f4d57614f4d614e0b565b816040528293508435835260208501359150614f6882614d2a565b81602084015260408501359150614f7e82614d2a565b816040840152606085013560608401526080