15 txs
20 calls
constructor
constructor((address router, address roleStore, address dataStore, address eventEmitter, address oracle, address orderVault, address orderHandler, address swapHandler, address externalHandler, address multichainVault) params)
functions
dataStore
viewfunction dataStore() view returns (address)
digests
viewfunction digests(bytes32) view returns (bool)
eventEmitter
viewfunction eventEmitter() view returns (address)
externalHandler
viewfunction externalHandler() view returns (address)
multichainProvider
viewfunction multichainProvider() view returns (address)
multichainVault
viewfunction multichainVault() view returns (address)
oracle
viewfunction oracle() view returns (address)
orderHandler
viewfunction orderHandler() view returns (address)
orderVault
viewfunction orderVault() view returns (address)
roleStore
viewfunction roleStore() view returns (address)
router
viewfunction router() view returns (address)
swapHandler
viewfunction swapHandler() view returns (address)
bridgeIn
payablefunction bridgeIn(address account, address token) payable
bridgeOut
nonpayablefunction bridgeOut(tuple relayParams, address account, uint256 srcChainId, tuple params)
bridgeOutFromController
nonpayablefunction bridgeOutFromController(address account, uint256 srcChainId, uint256 desChainId, uint256 deadline, tuple params)
initialize
nonpayablefunction initialize(address _multichainProvider)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
sendNativeToken
payablefunction sendNativeToken(address receiver, uint256 amount) payable
sendTokens
payablefunction sendTokens(address token, address receiver, uint256 amount) payable
sendWnt
payablefunction sendWnt(address receiver, uint256 amount) payable
transferOut
nonpayablefunction transferOut(tuple params)
events
Initialized
event Initialized(uint8 version)
TokenTransferReverted
event TokenTransferReverted(string reason, bytes returndata)
errors
DeadlinePassed
error DeadlinePassed(uint256 currentTimestamp, uint256 deadline)
DisabledFeature
error DisabledFeature(bytes32 key)
EmptyHoldingAddress
error EmptyHoldingAddress()
EmptyReceiver
error EmptyReceiver()
EmptyTokenTranferGasLimit
error EmptyTokenTranferGasLimit(address token)
InsufficientRelayFee
error InsufficientRelayFee(uint256 requiredRelayFee, uint256 availableFeeAmount)
InvalidDestinationChainId
error InvalidDestinationChainId(uint256 desChainId)
InvalidExternalCalls
error InvalidExternalCalls(uint256 sendTokensLength, uint256 sendAmountsLength)
InvalidInitializer
error InvalidInitializer()
InvalidMultichainProvider
error InvalidMultichainProvider(address provider)
InvalidPermitSpender
error InvalidPermitSpender(address spender, address expectedSpender)
InvalidSrcChainId
error InvalidSrcChainId(uint256 srcChainId)
InvalidUserDigest
error InvalidUserDigest(bytes32 digest)
MaxRelayFeeSwapForSubaccountExceeded
error MaxRelayFeeSwapForSubaccountExceeded(uint256 feeUsd, uint256 maxFeeUsd)
NonEmptyExternalCallsForSubaccountOrder
error NonEmptyExternalCallsForSubaccountOrder()
TokenPermitsNotAllowedForMultichain
error TokenPermitsNotAllowedForMultichain()
TokenTransferError
error TokenTransferError(address token, address receiver, uint256 amount)
Unauthorized
error Unauthorized(address msgSender, string role)
UnexpectedRelayFeeToken
error UnexpectedRelayFeeToken(address feeToken, address expectedFeeToken)
UnsupportedRelayFeeToken
error UnsupportedRelayFeeToken(address feeToken, address expectedFeeToken)
creation bytecode
0x61022060405234801561001157600080fd5b5060405161579238038061579283398101604081905261003091610637565b8080608001518160c001518260a001518360e001518461010001518660000151876020015188604001518960600151828961006f6100ef60201b60201c565b6001600160a01b0390811660c05290811660a0529081166080526001805590811660e052908116610100529384166101209081529184166101405283166101605295821661018052509283166101a0529082166101c05281166101e052920151909116610200525050600480546001600160a01b03191633179055610703565b600080806100fc4661028e565b1561014857507361ace8fba7b80aef8ed67f37cb60be00180872ad9273368165b2afb95fae8cec409efa59d5091f9875a5925073038479687b7bc7943313bffd524a4acc96b3f9be9150565b610151466102b6565b1561019d575073b16a1dbe755f992636705fdbb3a8678a657eb3ea927322dcc39b2ac376862183dd35a1664798dafc7da6925073ba4082f4961c8fb76231995c967cd9aa40f321b59150565b6101a6466102d4565b156101f257507342120a1417a091a52a8d4590e28fc6c0f61e56329273aced988c5b5fe3f11848c728d9a5f66cf34c9e73925073bbce89acdd86d0130bdc3f1fe37c3aedd79fc1f49150565b6101fb466102f2565b15610247575073abcc9b596420a9e9172fd5938620e265a0f9df929273b539068872230f20456cf38ec52ef2f91af4ae499250738598806401a63ddf52473f1b3c55bc9e33e2d73b9150565b5073cd565435e0d2109fefde337a66491541df0d142092738ace64cea52b409f930f60b516f65197fad4b056925073c7739c195618d314c08e8626c98f8573e4e436349150565b600081610e3514806102a1575081610e34145b156102ae57506001919050565b506000919050565b60008161014414806102a1575081610118036102ae57506001919050565b600081612b7414806102a1575081610ab5036102ae57506001919050565b60008160011480610303575081600a145b8061030e5750816019145b80610319575081601e145b806103245750816038145b8061032f5750816064145b8061033a575081606d145b806103455750816089145b8061035057508160b7145b8061035b57508160e9145b8061036657508160fa145b8061037257508161013a145b8061037e575081610440145b8061038a57508161044d145b8061039657508161046f145b806103a2575081610504145b806103ae575081610505145b806103ba5750816106c1145b806103c6575081610725145b806103d2575081610729145b806103de5750816107f7145b806103ea575081610ec0145b806103f657508161106a145b806104025750816118fe145b8061040e575081612105145b8061041a5750816127d8145b80610426575081614737145b80610432575081614739145b8061043e5750816162ef145b8061044a57508161868b145b8061045657508161a1ef145b8061046257508161a455145b8061046e57508161a4b1145b8061047a57508161a86a145b8061048657508161e708145b8061049357508162013882145b806104a0575081620138d4145b806104ad57508162013e31145b806104ba57508162014a34145b806104c75750816201b254145b806104d45750816203ade0145b806104e157508162066eee145b806104ee575081620a045c145b806104fb57508162133e40145b80610508575081625c2359145b806105155750816276adf1145b8061052257508162aa36a7145b8061052f57508162aa37dc145b8061053d5750816301bf4933145b8061054b575081630426e649145b806105595750816305535072145b8061056757508163059d7131145b8061057557508163075b3dcf145b80610583575081630a0c71fd145b80610591575081630d3b745e145b8061059f575081633b4c8eb9145b806105ad5750816352415249145b806105bb57508163bc1392a6145b806105ca5750816412dbe91402145b806102a15750816414865d0f05036102ae57506001919050565b919050565b60405161014081016001600160401b038111828210171561061a57634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146105e457600080fd5b600061014082840312801561064b57600080fd5b506106546105e9565b61065d83610620565b815261066b60208401610620565b602082015261067c60408401610620565b604082015261068d60608401610620565b606082015261069e60808401610620565b60808201526106af60a08401610620565b60a08201526106c060c08401610620565b60c08201526106d160e08401610620565b60e08201526106e36101008401610620565b6101008201526106f66101208401610620565b6101208201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051614ee16108b16000396000818161020d0152818161067501528181610be2015281816124f50152818161258d01528181612b7901528181612bef0152612caa01526000818161019801528181611e8d0152611ee90152600081816102cf0152610f740152600081816103030152610f4c0152600061039e01526000818161034a01528181610653015281816106eb01528181610bc101528181610c6d01528181610e71015281816122690152818161256b01528181612b570152612c8901526000818161025401528181610588015281816105d10152818161063101528181610ba001528181610cc801528181610eb401528181610f09015281816112aa015281816118cc015281816124d30152818161254901528181612b350152612c6801526000818161044501528181610aa60152611c630152600081816101d901526117ef01526000818161029b01528181610fd3015281816110780152818161212c015261228a0152600050506000505060006124520152614ee16000f3fe6080604052600436106100fa5760003560e01c806301ac4293146100ff5780630b9066d91461014457806326a3bebd146101665780632e944bd6146101865780634a4a7b04146101c7578063528a65f4146101fb57806353ead2d31461022f578063660d0d67146102425780637d39aaf1146102765780637dc0d1d0146102895780638a53aaac146102bd57806393845e46146102f15780639a74db97146103255780639ff78c3014610338578063ac9650d81461036c578063b58483051461038c578063b5cf1b29146103c0578063c4d66de8146103e0578063c51a14fb14610400578063e6d66ac814610420578063f887ea4014610433575b600080fd5b34801561010b57600080fd5b5061012f61011a36600461342f565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561015057600080fd5b5061016461015f366004613460565b610467565b005b34801561017257600080fd5b506101646101813660046134b9565b610488565b34801561019257600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b60405161013b9190613542565b3480156101d357600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b34801561020757600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b61016461023d366004613556565b610572565b34801561024e57600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b610164610284366004613556565b6105bb565b34801561029557600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102c957600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102fd57600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b610164610333366004613582565b6105f7565b34801561034457600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b61037f61037a3660046135bb565b610720565b60405161013b91906136dc565b34801561039857600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103cc57600080fd5b506101646103db3660046136ef565b610834565b3480156103ec57600080fd5b506101646103fb36600461375b565b6108d9565b34801561040c57600080fd5b506003546101ba906001600160a01b031681565b61016461042e366004613778565b610a5e565b34801561043f57600080fd5b506101ba7f000000000000000000000000000000000000000000000000000000000000000081565b61046f610b13565b3361047b814684610b6c565b5061048560018055565b50565b610490610b13565b8383836000805a90506104a1610eaf565b60006104ab610ee3565b90506104ba8187878787610fa9565b604051632094291560e11b815260009073c72390b4b667a0cb378b2dd85cfbf7bd61593b1090634128522a906104f6908e908c90600401613c6d565b602060405180830381865af4158015610513573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105379190613d69565b90506105458b8b838c6110f0565b6105508a8a8a610b6c565b5061055d81838787611232565b50505050505061056c60018055565b50505050565b61057a610b13565b61058382611460565b6105ae7f00000000000000000000000000000000000000000000000000000000000000008383611487565b6105b760018055565b5050565b6105c3610b13565b6105cc82611460565b6105ae7f00000000000000000000000000000000000000000000000000000000000000008383611588565b6105ff610b13565b6040516315ff6d2d60e01b8152600090731158e639da58fd104908343ef3f42a79d54d2918906315ff6d2d906106a3907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000009088908a908990600401613d82565b602060405180830381865af41580156106c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e49190613d69565b90506107167f00000000000000000000000000000000000000000000000000000000000000006000848685600061160b565b506105b760018055565b6060816001600160401b0381111561073a5761073a613dbd565b60405190808252806020026020018201604052801561076d57816020015b60608152602001906001900390816107585790505b50905060005b8281101561082c576000803086868581811061079157610791613dd3565b90506020028101906107a39190613de9565b6040516107b1929190613e2f565b600060405180830381855af49150503d80600081146107ec576040519150601f19603f3d011682016040523d82523d6000602084013e6107f1565b606091505b509150915081610804576108048161179f565b8084848151811061081757610817613dd3565b60209081029190910101525050600101610773565b505b92915050565b61083c610b13565b6108ab60405160200161086d906020808252600a908201526921a7a72a2927a62622a960b11b604082015260600190565b604051602081830303815290604052805190602001206040518060400160405280600a81526020016921a7a72a2927a62622a960b11b8152506117d8565b83156108c9576108be8484846000611888565b6108c9858583610b6c565b6108d260018055565b5050505050565b600054610100900460ff16158080156108f95750600054600160ff909116105b8061091a57506109083061198a565b15801561091a575060005460ff166001145b6109825760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff1916600117905580156109a5576000805461ff0019166101001790555b6004546001600160a01b031633146109d05760405163adc06ae760e01b815260040160405180910390fd5b6001600160a01b0382166109fa576000604051632314a6e360e01b81526004016109799190613542565b600380546001600160a01b0319166001600160a01b03841617905580156105b7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610a66610b13565b610a6f82611460565b6040516303704f0f60e31b81526001600160a01b0384811660048301523360248301819052848216604484015260648301849052917f000000000000000000000000000000000000000000000000000000000000000090911690631b82787890608401600060405180830381600087803b158015610aec57600080fd5b505af1158015610b00573d6000803e3d6000fd5b5050505050610b0e60018055565b505050565b600260015403610b655760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610979565b6002600155565b8060200135600003610b7d57505050565b468203610cac57731158e639da58fd104908343ef3f42a79d54d29186313bc4d697f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610c0e602087018761375b565b888988602001358a6040518963ffffffff1660e01b8152600401610c39989796959493929190613e3f565b60006040518083038186803b158015610c5157600080fd5b505af4158015610c65573d6000803e3d6000fd5b50610b0e92507f0000000000000000000000000000000000000000000000000000000000000000915060009050610c9f602085018561375b565b8685602001356000611999565b731158e639da58fd104908343ef3f42a79d54d291863fc25123e7f0000000000000000000000000000000000000000000000000000000000000000610cf7608085016060860161375b565b6040518363ffffffff1660e01b8152600401610d14929190613e8b565b60006040518083038186803b158015610d2c57600080fd5b505af4158015610d40573d6000803e3d6000fd5b50506003546040805160a08101909152600093506001600160a01b039091169150636c8ff58b908690869080610d79602089018961375b565b6001600160a01b031681526020018760200135815260200187604001358152602001876060016020810190610dae919061375b565b6001600160a01b03168152602001610dc96080890189613de9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040516001600160e01b031960e086901b168152610e2293929190600401613ea5565b6020604051808303816000875af1158015610e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e659190613d69565b60035490915061056c907f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b0316610ea7602086018661375b565b878588611999565b610ee17f0000000000000000000000000000000000000000000000000000000000000000610edc30611af3565b611b7c565b565b6040805160808101825260008082526020820181905291810182905260608101919091527f00000000000000000000000000000000000000000000000000000000000000006000610f3382611ba7565b604080516080810182526001600160a01b0394851681527f0000000000000000000000000000000000000000000000000000000000000000851660208201527f00000000000000000000000000000000000000000000000000000000000000008516918101919091529216606083015250919050565b610fb38480613f0e565b610fbc90614069565b6040516331e999fd60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c7a667f4906110089084906004016141fc565b600060405180830381600087803b15801561102257600080fd5b505af1158015611036573d6000803e3d6000fd5b50611051925061104c9150506040870187614253565b611c54565b6110698484611063602089018961429c565b85611da5565b6110768686868686611fbe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662ccf1556040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156110d057600080fd5b505af11580156110e4573d6000803e3d6000fd5b50505050505050505050565b6111128160e086013560a087013561110b6040890189614253565b9050611888565b604051638a3b3d6f60e01b81526004810182905260009073c72390b4b667a0cb378b2dd85cfbf7bd61593b1090638a3b3d6f90602401602060405180830381865af4158015611165573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111899190613d69565b905060006111b1828560405161190160f01b8152600281019290925260228201526042902090565b90506111bc816123c5565b73c72390b4b667a0cb378b2dd85cfbf7bd61593b1063bead678583836111e560c08b018b613de9565b8a6040518663ffffffff1660e01b81526004016112069594939291906142b2565b60006040518083038186803b15801561121e57600080fd5b505af41580156110e4573d6000803e3d6000fd5b60008085606001516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016112659190613542565b602060405180830381865afa158015611282573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a69190613d69565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ae1cfca6112e033612413565b6040518263ffffffff1660e01b81526004016112fe91815260200190565b602060405180830381865afa15801561131b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061133f9190614309565b61143657600061134e3361244e565b15905080156113fd5786516060880151604051630e22a74960e31b81526001600160a01b0392831660048201529116602482015260448101879052366064820152608481018390527349eaeafa626011ede0b9852e567dfcf8b62aba88906371153a489060a401602060405180830381865af41580156113d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f69190613d69565b9250611434565b611405612499565b92508183111561142c578282604051639cd7629560e01b815260040161097992919061432b565b6114346124a2565b505b611440828261434f565b905080156114585761145886606001518583866124ce565b505050505050565b6001600160a01b0381166104855760405163d551823d60e01b815260040160405180910390fd5b8060000361149457505050565b61149d82611460565b6000836001600160a01b031663bd02d0f56040516020016114ef906020808252601f908201527f4e41544956455f544f4b454e5f5452414e534645525f4741535f4c494d495400604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161152391815260200190565b602060405180830381865afa158015611540573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115649190613d69565b90506000806000806000868887f190508015611581575050505050565b6108d28585855b8060000361159557505050565b61159e82611460565b60006115a984611ba7565b9050806001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156115e657600080fd5b505af11580156115fa573d6000803e3d6000fd5b505050505061056c848285856125fc565b61161361333e565b8051611620906003612846565b604080518082019091526008815267383937bb34b232b960c11b6020820152815161164e91600090896128ab565b6040805180820190915260058152643a37b5b2b760d91b6020820152815161167991600190886128ab565b6040805180820190915260078152661858d8dbdd5b9d60ca1b602082015281516116a691600290876128ab565b60208101516116b6906002612846565b6116f0600060405180604001604052806006815260200165185b5bdd5b9d60d21b815250858460200151612908909392919063ffffffff16565b61172e60016040518060400160405280600a8152602001691cdc98d0da185a5b925960b21b815250848460200151612908909392919063ffffffff16565b866001600160a01b03166324de01e46117468661295b565b836040518363ffffffff1660e01b8152600401611764929190614acc565b600060405180830381600087803b15801561177e57600080fd5b505af1158015611792573d6000803e3d6000fd5b5050505050505050505050565b6000806117ab83612967565b9150915080156117cf578160405162461bcd60e51b81526004016109799190614b0e565b610b0e836129f7565b60405163ac4ab3fb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ac4ab3fb906118269033908690600401614b21565b602060405180830381865afa158015611843573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118679190614309565b6105b757338160405163a35b150b60e01b8152600401610979929190614b3a565b4683146118ab576040516330ddda8b60e21b815260048101849052602401610979565b80156118ca57604051637344d98160e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ae1cfca61190286612a00565b6040518263ffffffff1660e01b815260040161192091815260200190565b602060405180830381865afa15801561193d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119619190614309565b61198157604051632c9bcbdd60e01b815260048101859052602401610979565b61056c82612a65565b6001600160a01b03163b151590565b6119a161333e565b80516119ae906003612846565b604080518082019091526008815267383937bb34b232b960c11b602082015281516119dc91600090896128ab565b6040805180820190915260058152643a37b5b2b760d91b60208201528151611a0791600190886128ab565b6040805180820190915260088152673932b1b2b4bb32b960c11b60208201528151611a3591600290876128ab565b6020810151611a45906002612846565b611a7f600060405180604001604052806006815260200165185b5bdd5b9d60d21b815250858460200151612908909392919063ffffffff16565b611abd60016040518060400160405280600a8152602001691cdc98d0da185a5b925960b21b815250848460200151612908909392919063ffffffff16565b866001600160a01b03166324de01e4611ad58661295b565b836040518363ffffffff1660e01b8152600401611764929190614b5e565b6000604051602001611b319060208082526018908201527711d054d31154d4d7d191505515549157d11254d05093115160421b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b611b868282612a8a565b156105b75760405163dd70e0c960e01b815260048101829052602401610979565b6000816001600160a01b03166321f8a721604051602001611bdf9060208082526003908201526215d39560ea1b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b8152600401611c1391815260200190565b602060405180830381865afa158015611c30573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082e9190614ba1565b6000819003611c61575050565b7f000000000000000000000000000000000000000000000000000000000000000060005b8281101561056c576000848483818110611ca157611ca1613dd3565b90506101000201803603810190611cb89190614bbe565b9050826001600160a01b031681602001516001600160a01b031614611cf857806020015183604051633c0ac19960e01b8152600401610979929190613e8b565b60e0810151815160208301516040808501516060860151608087015160a088015160c0890151945163d505accf60e01b81526001600160a01b03978816600482015295871660248701526044860193909352606485019190915260ff16608484015260a483015260c482015291169063d505accf9060e401600060405180830381600087803b158015611d8a57600080fd5b505af1925050508015611d9b575060015b5050600101611c85565b611db26040830183614c51565b15905061056c578015611dd8576040516328f773e960e01b815260040160405180910390fd5b611de28280614c51565b15905080611e095750611df86020830183614c51565b9050611e048380614c51565b905014155b15611e4257611e188280614c51565b9050611e276020840184614c51565b60405163ec7fd38560e01b815261097993925060040161432b565b60005b611e4f8380614c51565b9050811015611ede57611ed685611e668580614c51565b84818110611e7657611e76613dd3565b9050602002016020810190611e8b919061375b565b7f0000000000000000000000000000000000000000000000000000000000000000611eb96020880188614c51565b86818110611ec957611ec9613dd3565b9050602002013588612afd565b600101611e45565b506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663d59922b0611f1b6040850185614c51565b611f286060870187614c51565b611f356080890189614c51565b611f4260a08b018b614c51565b6040518963ffffffff1660e01b8152600401611f65989796959493929190614c9a565b600060405180830381600087803b158015611f7f57600080fd5b505af1158015611f93573d6000803e3d6000fd5b5050505061056c8484848060800190611fac9190614c51565b611fb960a0880188614c51565b612be2565b611fc73361244e565b8015611ff0575084606001516001600160a01b0316611fe4612d67565b6001600160a01b031614155b1561201d57611ffd612d67565b8560600151604051630d0fcc0b60e01b8152600401610979929190613e8b565b61202a6060850185613f0e565b612038906040810190614c51565b15905061230a57801561221157600085600001516001600160a01b031663bd02d0f56040516020016120a99060208082526025908201527f4d41585f52454c41595f4645455f535741505f5553445f464f525f535542414360408201526410d3d5539560da1b606082015260800190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016120dd91815260200190565b602060405180830381865afa1580156120fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211e9190613d69565b905060006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016635dcf719461215e6060890189613f0e565b61216c90602081019061375b565b6040518263ffffffff1660e01b81526004016121889190613542565b6040805180830381865afa1580156121a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c89190614d46565b602001516121d96060880188613f0e565b602001356121e79190614d96565b90508181111561220e578082604051631808e37f60e31b815260040161097992919061432b565b50505b61224c836122226060870187613f0e565b61223090602081019061375b565b60208801516122426060890189613f0e565b6020013586612afd565b73c72390b4b667a0cb378b2dd85cfbf7bd61593b1063cbb114e7867f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006122b660608a018a613f0e565b6040518563ffffffff1660e01b81526004016122d59493929190614dad565b60006040518083038186803b1580156122ed57600080fd5b505af4158015612301573d6000803e3d6000fd5b505050506108d2565b6060808601516001600160a01b03169061232690860186613f0e565b61233490602081019061375b565b6001600160a01b03160361238a5761234f6060850185613f0e565b602001351561238557612385836123696060870187613f0e565b61237790602081019061375b565b306122426060890189613f0e565b6108d2565b6123976060850185613f0e565b6123a590602081019061375b565b85606001516040516374a488a760e11b8152600401610979929190613e8b565b60008181526002602052604090205460ff16156123f857604051630820e04560e11b815260048101829052602401610979565b6000908152600260205260409020805460ff19166001179055565b6000604051602001611b31906020808252601590820152741254d7d49153105657d1915157d15610d315511151605a1b604082015260600190565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361249157506001919050565b506000919050565b601f1936013590565b610ee136604719013560601c6124b6612499565b6124be612d67565b6001600160a01b03169190612d73565b61251a7f0000000000000000000000000000000000000000000000000000000000000000857f0000000000000000000000000000000000000000000000000000000000000000856125fc565b6040516315ff6d2d60e01b8152731158e639da58fd104908343ef3f42a79d54d2918906315ff6d2d906125bb907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908a908a908990600401613d82565b602060405180830381865af41580156125d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d29190613d69565b801561056c5761260b82611460565b6000846001600160a01b031663bd02d0f561262586612dc2565b6040518263ffffffff1660e01b815260040161264391815260200190565b602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126849190613d69565b9050806000036126a95783604051634fe14bfd60e11b81526004016109799190613542565b60006126b785858585612e00565b50905080156126c757505061056c565b6000866001600160a01b03166321f8a72160405160200161270b906020808252600f908201526e484f4c44494e475f4144445245535360881b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161273f91815260200190565b602060405180830381865afa15801561275c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127809190614ba1565b90506001600160a01b0381166127a957604051633a6de2f560e21b815260040160405180910390fd5b6000806127b888848888612e00565b9150915081156127cc57505050505061056c565b60006127d782612967565b5090507fc9f14d9a0a9b46470c7c0b6c508f8283abaab7f795f153953c58cd4250824dae818360405161280b929190614e07565b60405180910390a160405163012f3b8f60e71b81526001600160a01b03808b1660048301528916602482015260448101889052606401610979565b806001600160401b0381111561285e5761285e613dbd565b6040519080825280602002602001820160405280156128a457816020015b60408051808201909152606081526000602082015281526020019060019003908161287c5790505b5090915250565b81846000015184815181106128c2576128c2613dd3565b60200260200101516000018190525080846000015184815181106128e8576128e8613dd3565b6020908102919091018101516001600160a01b0390921691015250505050565b818460000151848151811061291f5761291f613dd3565b602002602001015160000181905250808460000151848151811061294557612945613dd3565b6020026020010151602001818152505050505050565b6001600160a01b031690565b6060600060448351101561298e575050604080516020810190915260008082529092909150565b600061299b846020015190565b90506307b9e43360e51b6001600160e01b03198216016129da57600484019350838060200190518101906129cf9190614e2c565b946001945092505050565b600060405180602001604052806000815250909250925050915091565b80518060208301fd5b6000604051602001612a3d906020808252601790820152761254d7d4d490d7d0d210525397d25117d1539050931151604a1b604082015260600190565b6040516020818303038152906040528051906020012082604051602001611b5f92919061432b565b8042111561048557428160405163041f95d160e51b815260040161097992919061432b565b604051633d70e7e560e11b8152600481018290526000906001600160a01b03841690637ae1cfca90602401602060405180830381865afa158015612ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af69190614309565b9392505050565b612b0683611460565b6040516313bc4d6960e01b8152731158e639da58fd104908343ef3f42a79d54d2918906313bc4d6990612bab907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908a908c908b908b908b90600401613e3f565b60006040518083038186803b158015612bc357600080fd5b505af4158015612bd7573d6000803e3d6000fd5b505050505050505050565b60005b81811015612d5e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316838383818110612c2957612c29613dd3565b9050602002016020810190612c3e919061375b565b6001600160a01b031603612d5657731158e639da58fd104908343ef3f42a79d54d29186315ff6d2d7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000898987818110612cdb57612cdb613dd3565b9050602002016020810190612cf0919061375b565b8c8c6040518763ffffffff1660e01b8152600401612d1396959493929190613d82565b602060405180830381865af4158015612d30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d549190613d69565b505b600101612be5565b50505050505050565b60331936013560601c90565b80600003612d8057505050565b6001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14612db857610b0e6001600160a01b0384168383612f6f565b610b0e8282612fc5565b6000604051602001611b31906020808252601890820152771513d2d15397d514905394d1915497d1d054d7d31253525560421b604082015260600190565b60006060600063a9059cbb60e01b8686604051602401612e21929190614b21565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b0383818316178352505050509050600080886001600160a01b03168684604051612e729190614e99565b60006040518083038160008787f1925050503d8060008114612eb0576040519150601f19603f3d011682016040523d82523d6000602084013e612eb5565b606091505b50915091508115612f5d578051600003612f1a57612edb896001600160a01b031661198a565b612f1a5760006040518060400160405280601481526020017310d85b1b081d1bc81b9bdb8b58dbdb9d1c9858dd60621b81525094509450505050612f66565b60008151118015612f3c575080806020019051810190612f3a9190614309565b155b15612f4f57600094509250612f66915050565b600194509250612f66915050565b60009450925050505b94509492505050565b610b0e8363a9059cbb60e01b8484604051602401612f8e929190614b21565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526130db565b804710156130155760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610979565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613062576040519150601f19603f3d011682016040523d82523d6000602084013e613067565b606091505b5050905080610b0e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610979565b6000613130826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166131b09092919063ffffffff16565b90508051600014806131515750808060200190518101906131519190614309565b610b0e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610979565b60606131bf84846000856131c7565b949350505050565b6060824710156132285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610979565b600080866001600160a01b031685876040516132449190614e99565b60006040518083038185875af1925050503d8060008114613281576040519150601f19603f3d011682016040523d82523d6000602084013e613286565b606091505b5091509150613297878383876132a2565b979650505050505050565b6060831561330f578251600003613308576132bc8561198a565b6133085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610979565b50816131bf565b6131bf83838151156133245781518083602001fd5b8060405162461bcd60e51b81526004016109799190614b0e565b604080516101208101909152606060e0820181815261010083019190915281908152602001613380604051806040016040528060608152602001606081525090565b81526020016133a2604051806040016040528060608152602001606081525090565b81526020016133c4604051806040016040528060608152602001606081525090565b81526020016133e6604051806040016040528060608152602001606081525090565b8152602001613408604051806040016040528060608152602001606081525090565b815260200161342a604051806040016040528060608152602001606081525090565b905290565b60006020828403121561344157600080fd5b5035919050565b600060a0828403121561345a57600080fd5b50919050565b60006020828403121561347257600080fd5b81356001600160401b0381111561348857600080fd5b6131bf84828501613448565b6001600160a01b038116811461048557600080fd5b80356134b481613494565b919050565b600080600080608085870312156134cf57600080fd5b84356001600160401b038111156134e557600080fd5b850161010081880312156134f857600080fd5b9350602085013561350881613494565b92506040850135915060608501356001600160401b0381111561352a57600080fd5b61353687828801613448565b91505092959194509250565b6001600160a01b0391909116815260200190565b6000806040838503121561356957600080fd5b823561357481613494565b946020939093013593505050565b6000806040838503121561359557600080fd5b82356135a081613494565b915060208301356135b081613494565b809150509250929050565b600080602083850312156135ce57600080fd5b82356001600160401b038111156135e457600080fd5b8301601f810185136135f557600080fd5b80356001600160401b0381111561360b57600080fd5b8560208260051b840101111561362057600080fd5b6020919091019590945092505050565b60005b8381101561364b578181015183820152602001613633565b50506000910152565b6000815180845261366c816020860160208601613630565b601f01601f19169290920160200192915050565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f198584030188526136ba838351613654565b602098890198909350919091019060010161369e565b50909695505050505050565b602081526000612af66020830184613680565b600080600080600060a0868803121561370757600080fd5b853561371281613494565b945060208601359350604086013592506060860135915060808601356001600160401b0381111561374257600080fd5b61374e88828901613448565b9150509295509295909350565b60006020828403121561376d57600080fd5b8135612af681613494565b60008060006060848603121561378d57600080fd5b833561379881613494565b925060208401356137a881613494565b929592945050506040919091013590565b60008235605e198336030181126137cf57600080fd5b90910192915050565b6000808335601e198436030181126137ef57600080fd5b83016020810192503590506001600160401b0381111561380e57600080fd5b8060051b360382131561382057600080fd5b9250929050565b81835260208301925060008160005b8481101561386757813561384981613494565b6001600160a01b031686526020958601959190910190600101613836565b5093949350505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e198436030181126138b157600080fd5b83016020810192503590506001600160401b038111156138d057600080fd5b80360382131561382057600080fd5b60008383855260208501945060208460051b8201018360005b868110156136d057838303601f19018852613913828761389a565b61391e858284613871565b60209a8b019a909550939093019250506001016138f8565b600061394282836137d8565b60608552613954606086018284613827565b91505061396460208401846137d8565b8583036020870152613977838284613827565b9250505061398860408401846137d8565b858303604087015261399b8382846138df565b9695505050505050565b6000823560be198336030181126137cf57600080fd5b60006139c782836137d8565b60c085526139d960c086018284613827565b9150506139e960208401846137d8565b85830360208701528083526001600160fb1b03811115613a0857600080fd5b60051b80826020850137919091019050613a2560408401846137d8565b6020868403016040870152613a3e602084018284613827565b92505050613a4f60608401846137d8565b8583036060870152613a628382846138df565b92505050613a7360808401846137d8565b8583036080870152613a86838284613827565b92505050613a9760a08401846137d8565b85830360a087015261399b838284613827565b6000808335601e19843603018112613ac157600080fd5b83016020810192503590506001600160401b03811115613ae057600080fd5b8060081b360382131561382057600080fd5b803560ff811681146134b457600080fd5b81835260208301925060008160005b84811015613867578135613b2581613494565b6001600160a01b031686526020820135613b3e81613494565b6001600160a01b031660208701526040828101359087015260608083013590870152613b6c60808301613af2565b60ff16608087015260a0828101359087015260c08083013590870152613b9460e083016134a9565b6001600160a01b031660e0870152610100958601959190910190600101613b12565b60008135613bc381613494565b6001600160a01b0316835260208281013590840152613be560408301836137d8565b60606040860152613bfa606086018284613827565b95945050505050565b60008135613c1081613494565b6001600160a01b0316835260208281013590840152604080830135908401526060820135613c3d81613494565b6001600160a01b03166060840152613c58608083018361389a565b60a06080860152613bfa60a086018284613871565b604081526000613c7d84856137b9565b6101006040840152613c93610140840182613936565b9050613ca260208601866139a5565b838203603f19016060850152613cb882826139bb565b915050613cc86040860186613aaa565b848303603f19016080860152613cdf838284613b03565b92505050613cf060608601866137b9565b838203603f190160a0850152613d068282613bb6565b608087013560c08681019190915260a088013560e0870152909250613d2e915086018661389a565b848303603f1901610100860152613d46838284613871565b60e088013561012087015285810360208701529250613bfa915082905085613c03565b600060208284031215613d7b57600080fd5b5051919050565b6001600160a01b039687168152948616602086015292851660408501529084166060840152909216608082015260a081019190915260c00190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112613e0057600080fd5b8301803591506001600160401b03821115613e1a57600080fd5b60200191503681900382131561382057600080fd5b8183823760009101908152919050565b6001600160a01b039889168152968816602088015294871660408701529286166060860152908516608085015290931660a083015260c082019290925260e08101919091526101000190565b6001600160a01b0392831681529116602082015260400190565b60018060a01b03841681528260208201526060604082015260018060a01b03825116606082015260208201516080820152604082015160a082015260018060a01b0360608301511660c08201526000608083015160a060e084015261399b610100840182613654565b60008235605e19833603018112613f2457600080fd5b9190910192915050565b604051606081016001600160401b0381118282101715613f5057613f50613dbd565b60405290565b60405161010081016001600160401b0381118282101715613f5057613f50613dbd565b604051601f8201601f191681016001600160401b0381118282101715613fa157613fa1613dbd565b604052919050565b60006001600160401b03821115613fc257613fc2613dbd565b5060051b60200190565b600082601f830112613fdd57600080fd5b8135613ff0613feb82613fa9565b613f79565b8082825260208201915060208360051b86010192508583111561401257600080fd5b602085015b8381101561403857803561402a81613494565b835260209283019201614017565b5095945050505050565b60006001600160401b0382111561405b5761405b613dbd565b50601f01601f191660200190565b60006060823603121561407b57600080fd5b614083613f2e565b82356001600160401b0381111561409957600080fd5b6140a536828601613fcc565b82525060208301356001600160401b038111156140c157600080fd5b6140cd36828601613fcc565b60208301525060408301356001600160401b038111156140ec57600080fd5b830136601f8201126140fd57600080fd5b803561410b613feb82613fa9565b8082825260208201915060208360051b85010192503683111561412d57600080fd5b602084015b838110156141b15780356001600160401b0381111561415057600080fd5b850136603f82011261416157600080fd5b6020810135614172613feb82614042565b81815236604084840101111561418757600080fd5b81604084016020830137600060208383010152808652505050602083019250602081019050614132565b5060408501525091949350505050565b600081518084526020840193506020830160005b828110156138675781516001600160a01b03168652602095860195909101906001016141d5565b60208152600082516060602084015261421860808401826141c1565b90506020840151601f1984830301604085015261423582826141c1565b9150506040840151601f19848303016060850152613bfa8282613680565b6000808335601e1984360301811261426a57600080fd5b8301803591506001600160401b0382111561428457600080fd5b6020019150600881901b360382131561382057600080fd5b6000823560be19833603018112613f2457600080fd5b85815284602082015260a0604082015260006142d260a083018587613871565b6001600160a01b0393909316606083015250808203608090910152600481526318d85b1b60e21b6020820152604001949350505050565b60006020828403121561431b57600080fd5b81518015158114612af657600080fd5b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561082e5761082e614339565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f1985840301885281518051604085526143a66040860182613654565b90506020820151915084810360208601526143c181836141c1565b60209a8b019a90955093909301925050600101614380565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b8181101561445357605f19888603018352835180516040875261442b6040880182613654565b6020928301516001600160a01b03169783019790975250938401939290920191600101614405565b5050505060208301518482036020860152613bfa8282614362565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f1985840301885281518051604085526144b26040860182613654565b6020928301518682038785015280518083529084019360009350909101905b808310156144f457835182526020820191506020840193506001830192506144d1565b5060209a8b019a9095509390930192505060010161448c565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b8181101561457e57605f19888603018352835180516040875261455f6040880182613654565b6020928301519783019790975250938401939290920191600101614539565b5050505060208301518482036020860152613bfa828261446e565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b8181101561457e57605f1988860301835283518051604087526145eb6040880182613654565b60209283015197830197909752509384019392909201916001016145c5565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f19858403018852815180516040855261464e6040860182613654565b6020928301518682038785015280518083529084019360009350909101905b808310156146925783511515825260208201915060208401935060018301925061466d565b5060209a8b019a90955093909301925050600101614628565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b8181101561471e57605f1988860301835283518051604087526146fd6040880182613654565b602092830151151597830197909752509384019392909201916001016146d7565b5050505060208301518482036020860152613bfa828261460a565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b8181101561457e57605f19888603018352835180516040875261478b6040880182613654565b6020928301519783019790975250938401939290920191600101614765565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f1985840301885281518051604085526147ee6040860182613654565b90506020820151915084810360208601526148098183613680565b60209a8b019a909550939093019250506001016147c8565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b818110156148a557605f1988860301835283518051604087526148736040880182613654565b905060208201519150868103602088015261488e8183613654565b96505050602093840193929092019160010161484d565b5050505060208301518482036020860152613bfa82826147aa565b600082825180855260208501945060208160051b8301016020850160005b838110156136d057601f1985840301885281518051604085526149046040860182613654565b6020928301518682038785015280518083529084019391925081830191600582901b84010160005b8281101561495d57601f19858303018452614948828751613654565b6020968701969490940193915060010161492c565b5080975050505050506020820191506020880197506001810190506148de565b60006040830182516040855281815180845260608701915060608160051b880101935060208301925060005b81811015614a0157605f1988860301835283518051604087526149cf6040880182613654565b90506020820151915086810360208801526149ea8183613654565b9650505060209384019392909201916001016149a9565b5050505060208301518482036020860152613bfa82826148c0565b6000815160e08452614a3160e08501826143d9565b905060208301518482036020860152614a4a828261450d565b91505060408301518482036040860152614a648282614599565b91505060608301518482036060860152614a7e82826146ab565b91505060808301518482036080860152614a988282614739565b91505060a083015184820360a0860152614ab28282614821565b91505060c083015184820360c0860152613bfa828261497d565b60608152601260608201527126bab63a34b1b430b4b7213934b233b2a4b760711b608082015282602082015260a0604082015260006131bf60a0830184614a1c565b602081526000612af66020830184613654565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906131bf90830184613654565b606081526013606082015272135d5b1d1a58da185a5b909c9a5919d953dd5d606a1b608082015282602082015260a0604082015260006131bf60a0830184614a1c565b600060208284031215614bb357600080fd5b8151612af681613494565b6000610100828403128015614bd257600080fd5b506000614bdd613f56565b8335614be881613494565b8152614bf6602085016134a9565b60208201526040848101359082015260608085013590820152614c1b60808501613af2565b608082015260a0848101359082015260c0808501359082018190529150614c4460e085016134a9565b60e0820152949350505050565b6000808335601e19843603018112614c6857600080fd5b8301803591506001600160401b03821115614c8257600080fd5b6020019150600581901b360382131561382057600080fd5b608081526000614cae608083018a8c613827565b82810360208401528088825260208201905060208960051b8301018a60005b8b811015614d0b57848303601f19018452614ce8828e61389a565b614cf3858284613871565b60209687019690955093909301925050600101614ccd565b50508481036040860152614d2081898b613827565b925050508281036060840152614d37818587613827565b9b9a5050505050505050505050565b60006040828403128015614d5957600080fd5b50604080519081016001600160401b0381118282101715614d7c57614d7c613dbd565b604052825181526020928301519281019290925250919050565b808202811582820484141761082e5761082e614339565b84516001600160a01b0390811682526020808701518216908301526040808701518216908301526060808701518216908301528481166080830152831660a082015260e060c0820181905260009061399b90830184613bb6565b604081526000614e1a6040830185613654565b8281036020840152613bfa8185613654565b600060208284031215614e3e57600080fd5b81516001600160401b03811115614e5457600080fd5b8201601f81018413614e6557600080fd5b8051614e73613feb82614042565b818152856020838501011115614e8857600080fd5b613bfa826020830160208601613630565b60008251613f2481846020870161363056fea26469706673582212204eb55fb30f9da0df2809ecef03f215dd83b9c18814fce9bf36c590792d55dce364736f6c634300081d00330000000000000000000000007452c558d45f8afc8c83dae62c3f8a5be19c71f60000000000000000000000003c3d99fd298f679dbc2cecd132b4ec4d0f5e6e72000000000000000000000000fd70de6b91282d8017aa4e741e9ae325cab992d8000000000000000000000000c8ee91a54287db53897056e12d9819156d3822fb0000000000000000000000007f01614ca5198ec979b1aad1daf0de7e0a215bdf00000000000000000000000031ef83a530fde1b38ee9a18093a333d8bbbc40d500000000000000000000000004315e233c1c6ffa61080b76e29d5e8a1f7b4a35000000000000000000000000db2ab9566732710d02b23325f79a8832118b97c5000000000000000000000000389cef541397e872dc04421f166b5bc2e0b374a5000000000000000000000000ceaadfaf6a8c489b250e407987877c5fdfcdbe6e