0 txs
0 calls
constructor
No constructor.
functions
deBridgeGate
viewfunction deBridgeGate() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
NATIVE_TOKEN
viewfunction NATIVE_TOKEN() view returns (address)
supportedRouters
viewfunction supportedRouters(address) view returns (bool)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
version
purefunction version() pure returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _deBridgeGate)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
sendV2
payablefunction sendV2(address _srcTokenIn, uint256 _srcAmountIn, bytes _srcTokenInPermitEnvelope, tuple _gateParams) payable
sendV3
payablefunction sendV3(address _srcTokenIn, uint256 _srcAmountIn, bytes _srcTokenInPermitEnvelope, uint256 _affiliateFeeAmount, address _affiliateFeeRecipient, tuple _gateParams) payable
strictlySwapAndCall
payablefunction strictlySwapAndCall(address _srcTokenIn, uint256 _srcAmountIn, bytes _srcTokenInPermitEnvelope, address _srcSwapRouter, bytes _srcSwapCalldata, address _srcTokenOut, uint256 _srcTokenExpectedAmountOut, address _srcTokenRefundRecipient, address _target, bytes _targetData) payable
swapAndSendV2
payablefunction swapAndSendV2(address _srcTokenIn, uint256 _srcAmountIn, bytes _srcTokenInPermitEnvelope, address _srcSwapRouter, bytes _srcSwapCalldata, address _srcTokenOut, tuple _gateParams) payable
swapAndSendV3
payablefunction swapAndSendV3(address _srcTokenIn, uint256 _srcAmountIn, bytes _srcTokenInPermitEnvelope, uint256 _affiliateFeeAmount, address _affiliateFeeRecipient, address _srcSwapRouter, bytes _srcSwapCalldata, address _srcTokenOut, tuple _gateParams) payable
updateSupportedRouter
nonpayablefunction updateSupportedRouter(address _srcSwapRouter, bool _isSupported)
events
Initialized
event Initialized(uint8 version)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
SupportedRouter
event SupportedRouter(address srcSwapRouter, bool isSupported)
SwapExecuted
event SwapExecuted(address router, address tokenIn, uint256 amountIn, address tokenOut, uint256 amountOut)
errors
AdminBadRole
error AdminBadRole()
AffiliateFeeDistributionFailed
error AffiliateFeeDistributionFailed(address recipient, address token, uint256 amount)
CallCausedBalanceDiscrepancy
error CallCausedBalanceDiscrepancy(address target, address token, uint256 expectedBalance, uint256 actualBalance)
CallFailed
error CallFailed(address target, bytes data)
EthTransferFailed
error EthTransferFailed()
NotEnoughSrcFundsIn
error NotEnoughSrcFundsIn(uint256 amount)
NotSupportedRouter
error NotSupportedRouter()
SignatureInvalidV
error SignatureInvalidV()
SwapEmptyResult
error SwapEmptyResult(address srcTokenOut)
SwapFailed
error SwapFailed(address srcRouter)
WrongArgumentLength
error WrongArgumentLength()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612f4b80620000f46000396000f3fe60806040526004361061012d5760003560e01c80635dfd9bc3116100a5578063c4d66de811610074578063cbe5190211610059578063cbe519021461036d578063d33f532e14610380578063d547741f146103a057600080fd5b8063c4d66de814610320578063ca777fbf1461034057600080fd5b80635dfd9bc31461027557806391d14854146102885780639879c48d146102db578063a217fddf1461030b57600080fd5b806331f7d964116100fc5780634d8160ba116100e15780634d8160ba1461023b57806354fd4d501461024e5780635c5c57011461026257600080fd5b806331f7d964146101e157806336568abe1461021b57600080fd5b806301ffc9a7146101395780631624eaf31461016e578063248a9ca3146101835780632f2ff15d146101c157600080fd5b3661013457005b600080fd5b34801561014557600080fd5b50610159610154366004612b4e565b6103c0565b60405190151581526020015b60405180910390f35b61018161017c3660046128ee565b610459565b005b34801561018f57600080fd5b506101b361019e366004612b10565b60009081526065602052604090206001015490565b604051908152602001610165565b3480156101cd57600080fd5b506101816101dc366004612b29565b610476565b3480156101ed57600080fd5b506101f6600081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610165565b34801561022757600080fd5b50610181610236366004612b29565b6104a0565b6101816102493660046127dd565b610558565b34801561025a57600080fd5b5060c86101b3565b61018161027036600461296e565b6107ab565b61018161028336600461270b565b6107fb565b34801561029457600080fd5b506101596102a3366004612b29565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156102e757600080fd5b506101596102f63660046126b5565b60986020526000908152604090205460ff1681565b34801561031757600080fd5b506101b3600081565b34801561032c57600080fd5b5061018161033b3660046126b5565b610834565b34801561034c57600080fd5b506097546101f69073ffffffffffffffffffffffffffffffffffffffff1681565b61018161037b366004612a56565b610a07565b34801561038c57600080fd5b5061018161039b3660046126d2565b610a3b565b3480156103ac57600080fd5b506101816103bb366004612b29565b610b2a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061045357507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610464848484610b4f565b61047084843484610bf3565b50505050565b60008281526065602052604090206001015461049181610db9565b61049b8383610dc6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461054a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6105548282610eba565b5050565b6105638c8c8c610b4f565b6000806105758e8e348e8e8e8e610f75565b91509150818711156105b6576040517fc0159a6100000000000000000000000000000000000000000000000000000000815260048101889052602401610541565b8187101561066b5760006105ca8884612de0565b90506105d68184612de0565b925073ffffffffffffffffffffffffffffffffffffffff89166106485760405173ffffffffffffffffffffffffffffffffffffffff88169082156108fc029083906000818181858888f19350505050158015610636573d6000803e3d6000fd5b506106418183612de0565b9150610669565b61066973ffffffffffffffffffffffffffffffffffffffff8a168883611113565b505b6000610676896111e7565b9050600061068460006111e7565b905073ffffffffffffffffffffffffffffffffffffffff8a16156106c3576106c373ffffffffffffffffffffffffffffffffffffffff8b1688866112ad565b6106cf8787878661143e565b60006106da8b6111e7565b905060006106e860006111e7565b9050856106f58386612de0565b101561076f57888c6107078887612de0565b6107118588612de0565b6040517ff52b9cd600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015293909216602484015260448301526064820152608401610541565b8461077a8285612de0565b10156107975788600061078d8787612de0565b6107118487612de0565b505050505050505050505050505050505050565b6107b68a8a8a610b4f565b6000806107c58c8c8b8b611552565b915091506000806107db8e85858c8c8c8c610f75565b915091506107eb86838388610bf3565b5050505050505050505050505050565b610806888888610b4f565b6000806108188a8a348a8a8a8a610f75565b9150915061082884838386610bf3565b50505050505050505050565b600054610100900460ff16158080156108545750600054600160ff909116105b8061086e5750303b15801561086e575060005460ff166001145b6108fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610541565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561095857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6109606116a0565b609780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055801561055457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15050565b610a12868686610b4f565b600080610a2188888787611552565b91509150610a3188838386610bf3565b5050505050505050565b3360009081527fffdfc1249c027f9191656349feb0761381bb32c9f557e01f419fd08754bf5a1b602052604090205460ff16610aa3576040517fde8e41fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526098602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168515159081179091558251938452908301527f3fc30fe9d1afedc310e6ec6fd5f84b0ae3b800cdc1bcb04b65b986fdd35868f091016109fb565b600082815260656020526040902060010154610b4581610db9565b61049b8383610eba565b73ffffffffffffffffffffffffffffffffffffffff8316610ba7578147101561049b576040517fc0159a6100000000000000000000000000000000000000000000000000000000815260048101839052602401610541565b6000610bb4848484611834565b905082811015610470576040517fc0159a6100000000000000000000000000000000000000000000000000000000815260048101849052602401610541565b6000610bff8347612de0565b905073ffffffffffffffffffffffffffffffffffffffff851615610c4457609754610c449073ffffffffffffffffffffffffffffffffffffffff8781169116866112ad565b609754825160208085015160405173ffffffffffffffffffffffffffffffffffffffff9094169363be2974769388938b938b93610cac920160609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252908a015160608b015160808c01517fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b168552610d2097969594600401612ccf565b6000604051808303818588803b158015610d3957600080fd5b505af1158015610d4d573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8616159050610d9757609754610d979073ffffffffffffffffffffffffffffffffffffffff878116911660006112ad565b80471115610db257610db233610dad8347612de0565b611ada565b5050505050565b610dc38133611b8e565b50565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661055457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055610e5c3390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561055457600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260986020526040812054819060ff16610fd6576040517f2a070fb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610fe28847612de0565b905073ffffffffffffffffffffffffffffffffffffffff8a166110135761100c8787878c88611c60565b9250611094565b61103473ffffffffffffffffffffffffffffffffffffffff8b16888b6112ad565b73ffffffffffffffffffffffffffffffffffffffff84166110615761105a878787611e1c565b9250611072565b61106f878787600088611c60565b92505b61109473ffffffffffffffffffffffffffffffffffffffff8b168860006112ad565b6040805173ffffffffffffffffffffffffffffffffffffffff89811682528c811660208301528183018c9052861660608201526080810185905290517fdde2f3711ab09cdddcfee16ca03e54d21fb8cf3fa647b9797913c950d38ad6939181900360a00190a16111048147612de0565b91505097509795505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261049b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611e7f565b600073ffffffffffffffffffffffffffffffffffffffff821661120b575047919050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b15801561127057600080fd5b505afa158015611284573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104539190612b90565b919050565b80158061135c57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e9060440160206040518083038186803b15801561132257600080fd5b505afa158015611336573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135a9190612b90565b155b6113e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610541565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261049b9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611165565b73ffffffffffffffffffffffffffffffffffffffff841660009081526098602052604090205460ff1661149d576040517f2a070fb400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168386866040516114c8929190612bf3565b60006040518083038185875af1925050503d8060008114611505576040519150601f19603f3d011682016040523d82523d6000602084013e61150a565b606091505b50915091508161154a5785816040517f6c544f33000000000000000000000000000000000000000000000000000000008152600401610541929190612ca0565b505050505050565b82348315801590611578575073ffffffffffffffffffffffffffffffffffffffff831615155b15611697576115878483612de0565b915073ffffffffffffffffffffffffffffffffffffffff8616611676576115ae8482612de0565b905060008373ffffffffffffffffffffffffffffffffffffffff168560405160006040518083038185875af1925050503d806000811461160a576040519150601f19603f3d011682016040523d82523d6000602084013e61160f565b606091505b5050905080611670576040517f0579ec9400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526000602482015260448101869052606401610541565b50611697565b61169773ffffffffffffffffffffffffffffffffffffffff87168486611113565b94509492505050565b600054610100900460ff16158080156116c05750600054600160ff909116105b806116da5750303b1580156116da575060005460ff166001145b611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610541565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156117c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6117cf600033611f8b565b8015610dc357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b80516000901561192257600061184a8382611f95565b90506000611859846020611f95565b90506000808061186a876040611fe5565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018990526064810188905260ff8216608482015260a4810184905260c48101839052929550909350915073ffffffffffffffffffffffffffffffffffffffff8a169063d505accf9060e401600060405180830381600087803b15801561190457600080fd5b505af1158015611918573d6000803e3d6000fd5b5050505050505050505b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8616906370a082319060240160206040518083038186803b15801561198a57600080fd5b505afa15801561199e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c29190612b90565b90506119e673ffffffffffffffffffffffffffffffffffffffff861633308761206b565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8716906370a082319060240160206040518083038186803b158015611a4e57600080fd5b505afa158015611a62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a869190612b90565b9050818111611ac4576040517fc0159a6100000000000000000000000000000000000000000000000000000000815260048101869052602401610541565b611ace8282612de0565b925050505b9392505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff8416908390604051611b119190612c03565b60006040518083038185875af1925050503d8060008114611b4e576040519150601f19603f3d011682016040523d82523d6000602084013e611b53565b606091505b505090508061049b576040517f6d963f8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661055457611be68173ffffffffffffffffffffffffffffffffffffffff1660146120c9565b611bf18360206120c9565b604051602001611c02929190612c1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261054191600401612d53565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff8416906370a082319060240160206040518083038186803b158015611cca57600080fd5b505afa158015611cde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d029190612b90565b9050611d108787878761143e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b158015611d7857600080fd5b505afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db09190612b90565b9050808210611e03576040517f5743851400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610541565b6000611e0f8383612de0565b9998505050505050505050565b600047611e2b8585858561143e565b47808210611e68576040517f5743851400000000000000000000000000000000000000000000000000000000815260006004820152602401610541565b6000611e748383612de0565b979650505050505050565b6000611ee1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661230c9092919063ffffffff16565b80519091501561049b5780806020019051810190611eff9190612af3565b61049b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610541565b6105548282610dc6565b6000611fa2826020612d66565b83511015611fdc576040517f40f0f32900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50016020015190565b8181016020810151604082015160419092015190919060ff16601b81101561201557612012601b82612d7e565b90505b8060ff16601b1415801561202d57508060ff16601c14155b15612064576040517f18ce829400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250925092565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104709085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611165565b606060006120d8836002612da3565b6120e3906002612d66565b67ffffffffffffffff8111156120fb576120fb612eb6565b6040519080825280601f01601f191660200182016040528015612125576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061215c5761215c612e87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121bf576121bf612e87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121fb846002612da3565b612206906001612d66565b90505b60018111156122a3577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061224757612247612e87565b1a60f81b82828151811061225d5761225d612e87565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361229c81612e23565b9050612209565b508315611ad3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610541565b606061231b8484600085612323565b949350505050565b6060824710156123b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610541565b73ffffffffffffffffffffffffffffffffffffffff85163b612433576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610541565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161245c9190612c03565b60006040518083038185875af1925050503d8060008114612499576040519150601f19603f3d011682016040523d82523d6000602084013e61249e565b606091505b5091509150611e74828286606083156124b8575081611ad3565b8251156124c85782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105419190612d53565b80356112a881612ee5565b60008083601f84011261251957600080fd5b50813567ffffffffffffffff81111561253157600080fd5b60208301915083602082850101111561254957600080fd5b9250929050565b600082601f83011261256157600080fd5b813567ffffffffffffffff8082111561257c5761257c612eb6565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156125c2576125c2612eb6565b816040528381528660208588010111156125db57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060a0828403121561260d57600080fd5b60405160a0810167ffffffffffffffff828210818311171561263157612631612eb6565b81604052829350843583526020850135915061264c82612ee5565b8160208401526040850135915061266282612f07565b8160408401526060850135915063ffffffff8216821461268157600080fd5b816060840152608085013591508082111561269b57600080fd5b506126a885828601612550565b6080830152505092915050565b6000602082840312156126c757600080fd5b8135611ad381612ee5565b600080604083850312156126e557600080fd5b82356126f081612ee5565b9150602083013561270081612f07565b809150509250929050565b60008060008060008060008060e0898b03121561272757600080fd5b883561273281612ee5565b975060208901359650604089013567ffffffffffffffff8082111561275657600080fd5b6127628c838d01612550565b975060608b0135915061277482612ee5565b90955060808a0135908082111561278a57600080fd5b6127968c838d01612507565b90965094508491506127aa60a08c016124fc565b935060c08b01359150808211156127c057600080fd5b506127cd8b828c016125fb565b9150509295985092959890939650565b6000806000806000806000806000806000806101408d8f03121561280057600080fd5b6128098d6124fc565b9b5060208d01359a5067ffffffffffffffff60408e0135111561282b57600080fd5b61283b8e60408f01358f01612550565b995061284960608e016124fc565b985067ffffffffffffffff60808e0135111561286457600080fd5b6128748e60808f01358f01612507565b909850965061288560a08e016124fc565b955060c08d0135945061289a60e08e016124fc565b93506128a96101008e016124fc565b925067ffffffffffffffff6101208e013511156128c557600080fd5b6128d68e6101208f01358f01612507565b81935080925050509295989b509295989b509295989b565b6000806000806080858703121561290457600080fd5b843561290f81612ee5565b935060208501359250604085013567ffffffffffffffff8082111561293357600080fd5b61293f88838901612550565b9350606087013591508082111561295557600080fd5b50612962878288016125fb565b91505092959194509250565b6000806000806000806000806000806101208b8d03121561298e57600080fd5b6129978b6124fc565b995060208b0135985060408b013567ffffffffffffffff808211156129bb57600080fd5b6129c78e838f01612550565b995060608d013598506129dc60808e016124fc565b97506129ea60a08e016124fc565b965060c08d0135915080821115612a0057600080fd5b612a0c8e838f01612507565b9096509450849150612a2060e08e016124fc565b93506101008d0135915080821115612a3757600080fd5b50612a448d828e016125fb565b9150509295989b9194979a5092959850565b60008060008060008060c08789031215612a6f57600080fd5b8635612a7a81612ee5565b955060208701359450604087013567ffffffffffffffff80821115612a9e57600080fd5b612aaa8a838b01612550565b95506060890135945060808901359150612ac382612ee5565b90925060a08801359080821115612ad957600080fd5b50612ae689828a016125fb565b9150509295509295509295565b600060208284031215612b0557600080fd5b8151611ad381612f07565b600060208284031215612b2257600080fd5b5035919050565b60008060408385031215612b3c57600080fd5b82359150602083013561270081612ee5565b600060208284031215612b6057600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611ad357600080fd5b600060208284031215612ba257600080fd5b5051919050565b60008151808452612bc1816020860160208601612df7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251612c15818460208701612df7565b9190910192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612c57816017850160208801612df7565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c94816028840160208801612df7565b01602801949350505050565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061231b6040830184612ba9565b600061010073ffffffffffffffffffffffffffffffffffffffff8a168352886020840152876040840152806060840152612d0b81840188612ba9565b90508281038060808501526000825286151560a085015263ffffffff861660c08501526020810160e085015250612d456020820185612ba9565b9a9950505050505050505050565b602081526000611ad36020830184612ba9565b60008219821115612d7957612d79612e58565b500190565b600060ff821660ff84168060ff03821115612d9b57612d9b612e58565b019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ddb57612ddb612e58565b500290565b600082821015612df257612df2612e58565b500390565b60005b83811015612e12578181015183820152602001612dfa565b838111156104705750506000910152565b600081612e3257612e32612e58565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610dc357600080fd5b8015158114610dc357600080fdfea26469706673582212203ffb70386a0be37b625d2eafbdba6127b07adb1a7244ee70afb828dbc151dd8a64736f6c63430008070033