39k txs
186.3k calls
constructor
constructor(uint256 chainId_, uint256 chainPrecision_, address allbridgeMessenger_, address wormholeMessenger_, address gasOracle_)
functions
canSwap
viewfunction canSwap() view returns (uint8)
chainId
viewfunction chainId() view returns (uint256)
gasUsage
viewfunction gasUsage(uint256 chainId) view returns (uint256 amount)
getBridgingCostInTokens
viewfunction getBridgingCostInTokens(uint256 destinationChainId, uint8 messenger, address tokenAddress) view returns (uint256)
getMessageCost
viewfunction getMessageCost(uint256 chainId, uint8 protocol) view returns (uint256)
getMessageGasUsage
viewfunction getMessageGasUsage(uint256 chainId, uint8 protocol) view returns (uint256)
getTransactionCost
viewfunction getTransactionCost(uint256 chainId) view returns (uint256)
hashMessage
purefunction hashMessage(uint256 amount, bytes32 recipient, uint256 sourceChainId, uint256 destinationChainId, bytes32 receiveToken, uint256 nonce, uint8 messenger) pure returns (bytes32)
hasReceivedMessage
viewfunction hasReceivedMessage(bytes32 message, uint8 protocol) view returns (bool)
hasSentMessage
viewfunction hasSentMessage(bytes32 message) view returns (bool)
otherBridges
viewfunction otherBridges(uint256 chainId) view returns (bytes32 bridgeAddress)
otherBridgeTokens
viewfunction otherBridgeTokens(uint256 chainId, bytes32 tokenAddress) view returns (bool isSupported)
owner
viewfunction owner() view returns (address)
pools
viewfunction pools(bytes32 tokenId) view returns (address)
processedMessages
viewfunction processedMessages(bytes32 messageHash) view returns (uint256 isProcessed)
sentMessages
viewfunction sentMessages(bytes32 messageHash) view returns (uint256 isSent)
addBridgeToken
nonpayablefunction addBridgeToken(uint256 chainId_, bytes32 tokenAddress)
addPool
nonpayablefunction addPool(address pool, bytes32 token)
receiveTokens
payablefunction receiveTokens(uint256 amount, bytes32 recipient, uint256 sourceChainId, bytes32 receiveToken, uint256 nonce, uint8 messenger, uint256 receiveAmountMin) payable
registerBridge
nonpayablefunction registerBridge(uint256 chainId_, bytes32 bridgeAddress)
removeBridgeToken
nonpayablefunction removeBridgeToken(uint256 chainId_, bytes32 tokenAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
setAllbridgeMessenger
nonpayablefunction setAllbridgeMessenger(address allbridgeMessenger_)
setGasOracle
nonpayablefunction setGasOracle(address gasOracle_)
setGasUsage
nonpayablefunction setGasUsage(uint256 chainId, uint256 gasAmount)
setRebalancer
nonpayablefunction setRebalancer(address rebalancer_)
setStopAuthority
nonpayablefunction setStopAuthority(address stopAuthority_)
setWormholeMessenger
nonpayablefunction setWormholeMessenger(address wormholeMessenger_)
startSwap
nonpayablefunction startSwap()
stopSwap
nonpayablefunction stopSwap()
swap
nonpayablefunction swap(uint256 amount, bytes32 token, bytes32 receiveToken, address recipient, uint256 receiveAmountMin)
swapAndBridge
payablefunction swapAndBridge(bytes32 token, uint256 amount, bytes32 recipient, uint256 destinationChainId, bytes32 receiveToken, uint256 nonce, uint8 messenger, uint256 feeTokenAmount) payable
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawBridgingFeeInTokens
nonpayablefunction withdrawBridgingFeeInTokens(address token)
withdrawGasTokens
nonpayablefunction withdrawGasTokens(uint256 amount)
events
BridgingFeeFromTokens
event BridgingFeeFromTokens(uint256 gas)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Received
event Received(address sender, uint256 amount)
ReceiveFee
event ReceiveFee(uint256 bridgeTransactionCost, uint256 messageTransactionCost)
Swapped
event Swapped(address sender, address recipient, bytes32 sendToken, bytes32 receiveToken, uint256 sendAmount, uint256 receiveAmount)
TokensReceived
event TokensReceived(uint256 amount, bytes32 recipient, uint256 nonce, uint8 messenger, bytes32 message)
TokensSent
event TokensSent(uint256 amount, bytes32 recipient, uint256 destinationChainId, bytes32 receiveToken, uint256 nonce, uint8 messenger)
errors
No errors.
creation bytecode
0x60c06040526007805460ff60a01b1916600160a01b1790553480156200002457600080fd5b5060405162002bee38038062002bee833981016040819052620000479162000124565b828285836200005633620000bb565b600180546001600160a01b039283166001600160a01b03199182161790915560809290925260005460068054841691831691909117905560088054948216948316949094179093556009805492909316911617905550505060a091909152506200018c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200012157600080fd5b50565b600080600080600060a086880312156200013d57600080fd5b8551945060208601519350604086015162000158816200010b565b60608701519093506200016b816200010b565b60808701519092506200017e816200010b565b809150509295509295909350565b60805160a051612a20620001ce600039600081816105f70152818161123301528181611ae301528181611bd30152611ccb015260006116c70152612a206000f3fe6080604052600436106102385760003560e01c806382e3702d11610138578063b5217bb4116100b0578063e3f04fa41161007f578063e4ce616011610064578063e4ce61601461074c578063eb5886751461076c578063f2fde38b1461078c57610277565b8063e3f04fa414610719578063e43bfe5e1461073957610277565b8063b5217bb414610699578063b633b364146106cf578063c7c56d7e146106e4578063c992b5b21461070457610277565b80639a8a059211610107578063a1f5e9cd116100ec578063a1f5e9cd14610639578063a87b815214610659578063aab651921461067957610277565b80639a8a0592146105e55780639bb557421461061957610277565b806382e3702d1461053957806388ba16ab146105665780638b9369e2146105935780638da5cb5b146105b357610277565b80633ee2594e116101cb578063685933371161019a578063715018a61161017f578063715018a6146104e4578063737dae1d146104f95780637d18330b1461051957610277565b806368593337146104a45780636cfd1553146104c457610277565b80633ee2594e146104315780634927b44c146104515780634cd480bd146104715780635fa1ebd91461048457610277565b80632d4b01b5116102075780632d4b01b5146103975780632ed1084b146103c4578063331838b2146103e457806336d6825a1461040457610277565b806310ce0516146102c45780631268cee8146102fc57806318b513081461031e5780632c48bb8d1461034c57610277565b3661027757604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b60405162461bcd60e51b815260206004820152600b60248201527f556e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b3480156102d057600080fd5b506007546102e590600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561030857600080fd5b5061031c6103173660046123f1565b6107ac565b005b34801561032a57600080fd5b5061033e6103393660046123f1565b6107e5565b6040519081526020016102f3565b34801561035857600080fd5b5061038761036736600461240a565b600d60209081526000928352604080842090915290825290205460ff1681565b60405190151581526020016102f3565b3480156103a357600080fd5b5061033e6103b23660046123f1565b600c6020526000908152604090205481565b3480156103d057600080fd5b5061033e6103df366004612440565b610888565b3480156103f057600080fd5b5061031c6103ff3660046124b1565b6108dd565b34801561041057600080fd5b5061033e61041f3660046123f1565b60026020526000908152604090205481565b34801561043d57600080fd5b5061031c61044c36600461240a565b6109c0565b34801561045d57600080fd5b5061031c61046c3660046124fa565b6109da565b61031c61047f366004612517565b610a04565b34801561049057600080fd5b5061031c61049f36600461240a565b610b78565b3480156104b057600080fd5b5061033e6104bf36600461257d565b610b92565b3480156104d057600080fd5b5061031c6104df3660046124fa565b610c75565b3480156104f057600080fd5b5061031c610c9f565b34801561050557600080fd5b5061033e61051436600461257d565b610cb3565b34801561052557600080fd5b5061033e6105343660046125a9565b610d49565b34801561054557600080fd5b5061033e6105543660046123f1565b600b6020526000908152604090205481565b34801561057257600080fd5b5061033e6105813660046123f1565b600a6020526000908152604090205481565b34801561059f57600080fd5b506103876105ae3660046123f1565b610e25565b3480156105bf57600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f3565b3480156105f157600080fd5b5061033e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561062557600080fd5b5061031c6106343660046124fa565b610f42565b34801561064557600080fd5b5061031c6106543660046124fa565b610f6c565b34801561066557600080fd5b5061031c6106743660046124fa565b610f96565b34801561068557600080fd5b5061031c61069436600461240a565b610fc0565b3480156106a557600080fd5b506105cd6106b43660046123f1565b6003602052600090815260409020546001600160a01b031681565b3480156106db57600080fd5b5061031c610feb565b3480156106f057600080fd5b5061031c6106ff36600461240a565b611054565b34801561071057600080fd5b5061031c611082565b34801561072557600080fd5b5061031c6107343660046124fa565b61109f565b61031c6107473660046125e9565b611147565b34801561075857600080fd5b5061038761076736600461257d565b6114ec565b34801561077857600080fd5b5061031c610787366004612645565b611610565b34801561079857600080fd5b5061031c6107a73660046124fa565b611757565b6107b46117e7565b604051339082156108fc029083906000818181858888f193505050501580156107e1573d6000803e3d6000fd5b5050565b6001546000828152600260205260408082205490517fca24994c00000000000000000000000000000000000000000000000000000000815260048101859052602481019190915290916001600160a01b03169063ca24994c90604401602060405180830381865afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108829190612671565b92915050565b60006108cf86868a8a8a8989896040516020016108aa969594939291906126a0565b604051602081830303815290604052805190602001206118419092919063ffffffff16565b90505b979650505050505050565b600754600160a01b900460ff166001146109395760405162461bcd60e51b815260206004820152601760248201527f526f757465723a20737761702070726f6869626974656400000000000000000060448201526064016102bb565b600061094685338861185a565b905060006109568585848661197a565b604080513381526001600160a01b0387166020820152908101889052606081018790526080810189905260a081018290529091507fe85f63622be58135a84c6e9de632115a3c471b0540a04d37a7c53a0647cd0c399060c00160405180910390a150505050505050565b6109c86117e7565b6000918252600c602052604090912055565b6109e26117e7565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b600754600160a01b900460ff16600114610a605760405162461bcd60e51b815260206004820152601760248201527f526f757465723a20737761702070726f6869626974656400000000000000000060448201526064016102bb565b808711610aaf5760405162461bcd60e51b815260206004820152601e60248201527f4272696467653a20616d6f756e7420746f6f206c6f7720666f7220666565000060448201526064016102bb565b6000869003610b265760405162461bcd60e51b815260206004820152602260248201527f4272696467653a2062726964676520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016102bb565b6000610b33338a84611a8f565b610b3d9034612709565b90506000610b4b838a61271c565b90506000610b5a8b338461185a565b9050610b6b818a8a8a8a8a89611bd1565b5050505050505050505050565b610b806117e7565b60009182526002602052604090912055565b60006001826003811115610ba857610ba861268a565b03610c2257600854604051630316a26160e31b8152600481018590526001600160a01b03909116906318b51308906024015b602060405180830381865afa158015610bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1b9190612671565b9050610882565b6002826003811115610c3657610c3661268a565b03610c6c57600954604051630316a26160e31b8152600481018590526001600160a01b03909116906318b5130890602401610bda565b50600092915050565b610c7d6117e7565b600780546001600160a01b0319166001600160a01b0392909216919091179055565b610ca76117e7565b610cb16000611ef5565b565b60006001826003811115610cc957610cc961268a565b03610cff57600854604051631b6b412d60e11b8152600481018590526001600160a01b03909116906336d6825a90602401610bda565b6002826003811115610d1357610d1361268a565b03610c6c57600954604051631b6b412d60e11b8152600481018590526001600160a01b03909116906336d6825a90602401610bda565b6001600160a01b0380821660009081526004602052604081205460015491929091166358c09b8f86610d7b8188610cb3565b600089815260026020526040902054610d949190612709565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526024820152604401602060405180830381865afa158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e119190612671565b610e1b919061272f565b90505b9392505050565b6008546040517f95b70182000000000000000000000000000000000000000000000000000000008152600481018390526000916001600160a01b0316906395b7018290602401602060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190612671565b15158061088257506009546040517f82e3702d000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03909116906382e3702d90602401602060405180830381865afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a9190612671565b151592915050565b610f4a6117e7565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b610f746117e7565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b610f9e6117e7565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610fc86117e7565b6000918252600d602090815260408084209284529190529020805460ff19169055565b6006546001600160a01b031633146110455760405162461bcd60e51b815260206004820152601c60248201527f526f757465723a206973206e6f742073746f70417574686f726974790000000060448201526064016102bb565b6007805460ff60a01b19169055565b61105c6117e7565b6000918252600d602090815260408084209284529190529020805460ff19166001179055565b61108a6117e7565b6007805460ff60a01b1916600160a01b179055565b6110a76117e7565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112b9190612671565b905080156107e1576107e16001600160a01b0383163383611f45565b600754600160a01b900460ff166001146111a35760405162461bcd60e51b815260206004820152601760248201527f526f757465723a20737761702070726f6869626974656400000000000000000060448201526064016102bb565b6000858152600c60205260409020546111fe5760405162461bcd60e51b815260206004820152601d60248201527f4272696467653a20736f75726365206e6f74207265676973746572656400000060448201526064016102bb565b6000858152600c6020526040808220549051632ed1084b60e01b81526112fe91903090632ed1084b90611261908d908d908d907f0000000000000000000000000000000000000000000000000000000000000000908e908e908e90600401612773565b602060405180830381865afa15801561127e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a29190612671565b90600082600052816020527dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040600020167fffff000000000000000000000000000000000000000000000000000000000000841617905092915050565b6000818152600a60205260409020549091501561135d5760405162461bcd60e51b815260206004820152601960248201527f4272696467653a206d6573736167652070726f6365737365640000000000000060448201526064016102bb565b6000818152600a60205260409081902060019055517fe4ce6160000000000000000000000000000000000000000000000000000000008152309063e4ce6160906113ad90849087906004016127b5565b602060405180830381865afa1580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee91906127c9565b61143a5760405162461bcd60e51b815260206004820152601260248201527f4272696467653a206e6f206d657373616765000000000000000000000000000060448201526064016102bb565b600061144886898b8661197a565b905034156114a2576040516001600160a01b038916903490600081818185875af1925050503d8060008114611499576040519150601f19603f3d011682016040523d82523d6000602084013e61149e565b606091505b5050505b7fe9d840d27ab4032a839c20760fb995af8e3ad1980b9428980ca1c7e072acd87a81898787866040516114d99594939291906127eb565b60405180910390a1505050505050505050565b600060018260038111156115025761150261268a565b0361157e5760085460405163f69f815160e01b8152600481018590526001600160a01b039091169063f69f8151906024015b602060405180830381865afa158015611551573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115759190612671565b15159050610882565b60028260038111156115925761159261268a565b036115c85760095460405163f69f815160e01b8152600481018590526001600160a01b039091169063f69f815190602401611534565b60405162461bcd60e51b815260206004820152600f60248201527f4e6f7420696d706c656d656e746564000000000000000000000000000000000060448201526064016102bb565b6116186117e7565b600081815260036020908152604080832080546001600160a01b0319166001600160a01b038781169190911790915581517f313ce56700000000000000000000000000000000000000000000000000000000815291518594939185169263313ce5679260048083019391928290030181865afa15801561169c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c0919061281d565b60ff1690507f00000000000000000000000000000000000000000000000000000000000000006116f182601261271c565b6116fb9190612709565b61170690600a612924565b6001600160a01b03831660009081526005602052604090205561172a81601261271c565b61173590600a612924565b6001600160a01b03909216600090815260046020526040902091909155505050565b61175f6117e7565b6001600160a01b0381166117db5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102bb565b6117e481611ef5565b50565b6000546001600160a01b03163314610cb15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102bb565b6000836000528260005381600153505060005192915050565b6000838152600360205260408120546001600160a01b0316806118bf5760405162461bcd60e51b815260206004820152600f60248201527f526f757465723a206e6f20706f6f6c000000000000000000000000000000000060448201526064016102bb565b6118d46001600160a01b038616858386611ff3565b6007546040517f28fdb4810000000000000000000000000000000000000000000000000000000081526001600160a01b0386811660048301819052602483018790529281169092146044820152908216906328fdb481906064016020604051808303816000875af115801561194d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119719190612671565b95945050505050565b6000848152600360205260408120546001600160a01b0316806119df5760405162461bcd60e51b815260206004820152601760248201527f526f757465723a206e6f207265636569766520706f6f6c00000000000000000060448201526064016102bb565b6007546040517f2d46f63e0000000000000000000000000000000000000000000000000000000081526001600160a01b03878116600483018190526024830188905260448301879052928116909214606482015290821690632d46f63e906084016020604051808303816000875af1158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a839190612671565b9150505b949350505050565b600081600003611aa157506000610e1e565b8280611ab86001600160a01b038216873087611ff3565b6001546040517f26a49e370000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526000916001600160a01b0316906326a49e3790602401602060405180830381865afa158015611b3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5e9190612671565b6001600160a01b038416600090815260056020526040902054611b82908790612930565b611b8c919061272f565b90507f02a1962fff2ae0f895c1fcd8481ce39cce1e8083e752ce6f5e80d2b5366382c881604051611bbf91815260200190565b60405180910390a19695505050505050565b7f00000000000000000000000000000000000000000000000000000000000000008503611c405760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a2077726f6e672064657374696e6174696f6e20636861696e0060448201526064016102bb565b6000858152600d6020908152604080832087845290915290205460ff16611ca95760405162461bcd60e51b815260206004820152601e60248201527f4272696467653a20756e6b6e6f776e20636861696e206f7220746f6b656e000060448201526064016102bb565b604051632ed1084b60e01b81526000903090632ed1084b90611cfb908b908b907f0000000000000000000000000000000000000000000000000000000000000000908c908c908c908c90600401612773565b602060405180830381865afa158015611d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d3c9190612671565b6000818152600b602052604090205490915015611d9b5760405162461bcd60e51b815260206004820152601b60248201527f4272696467653a20746f6b656e7320616c72656164792073656e74000000000060448201526064016102bb565b6000818152600b60205260408082206001905551630316a26160e31b81526004810188905230906318b5130890602401602060405180830381865afa158015611de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0c9190612671565b90506000611e1a838661204a565b60408051848152602081018390529192507f706abb59b8db30e9e92cb7e272fbe6682712ec97e7b117d7ee3389b24bb3de21910160405180910390a1808201841015611ea85760405162461bcd60e51b815260206004820152601660248201527f4272696467653a206e6f7420656e6f756768206665650000000000000000000060448201526064016102bb565b7f9cd6008e8d4ebd34fd9d022278fec7f95d133780ecc1a0dea459fae3e96753908a8a8a8a8a8a604051611ee196959493929190612947565b60405180910390a150505050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b038316602482015260448101829052611fee9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526121f9565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526120449085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611f8a565b50505050565b600060018260038111156120605761206061268a565b0361213c57600854604051630316a26160e31b8152600185901a60048201526001600160a01b03909116906318b5130890602401602060405180830381865afa1580156120b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120d59190612671565b600854604051631c25939560e31b8152600481018690529192506001600160a01b03169063e12c9ca89083906024015b6000604051808303818588803b15801561211e57600080fd5b505af1158015612132573d6000803e3d6000fd5b5050505050610882565b60028260038111156121505761215061268a565b036115c857600954604051630316a26160e31b8152600185901a60048201526001600160a01b03909116906318b5130890602401602060405180830381865afa1580156121a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121c59190612671565b600954604051631c25939560e31b8152600481018690529192506001600160a01b03169063e12c9ca8908390602401612105565b600061224e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122de9092919063ffffffff16565b805190915015611fee578080602001905181019061226c91906127c9565b611fee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102bb565b6060610e1b848460008585600080866001600160a01b03168587604051612305919061299b565b60006040518083038185875af1925050503d8060008114612342576040519150601f19603f3d011682016040523d82523d6000602084013e612347565b606091505b50915091506108d287838387606083156123c25782516000036123bb576001600160a01b0385163b6123bb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102bb565b5081611a87565b611a8783838151156123d75781518083602001fd5b8060405162461bcd60e51b81526004016102bb91906129b7565b60006020828403121561240357600080fd5b5035919050565b6000806040838503121561241d57600080fd5b50508035926020909101359150565b80356004811061243b57600080fd5b919050565b600080600080600080600060e0888a03121561245b57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a0880135915061248e60c0890161242c565b905092959891949750929550565b6001600160a01b03811681146117e457600080fd5b600080600080600060a086880312156124c957600080fd5b85359450602086013593506040860135925060608601356124e98161249c565b949793965091946080013592915050565b60006020828403121561250c57600080fd5b8135610e1e8161249c565b600080600080600080600080610100898b03121561253457600080fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925061256760c08a0161242c565b915060e089013590509295985092959890939650565b6000806040838503121561259057600080fd5b823591506125a06020840161242c565b90509250929050565b6000806000606084860312156125be57600080fd5b833592506125ce6020850161242c565b915060408401356125de8161249c565b809150509250925092565b600080600080600080600060e0888a03121561260457600080fd5b873596506020880135955060408801359450606088013593506080880135925061263060a0890161242c565b915060c0880135905092959891949750929550565b6000806040838503121561265857600080fd5b82356126638161249c565b946020939093013593505050565b60006020828403121561268357600080fd5b5051919050565b634e487b7160e01b600052602160045260246000fd5b8681528560208201528460408201528360608201528260808201526000600483106126db57634e487b7160e01b600052602160045260246000fd5b5060f89190911b60a082015260a10195945050505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610882576108826126f3565b81810381811115610882576108826126f3565b60008261274c57634e487b7160e01b600052601260045260246000fd5b500490565b6004811061276f57634e487b7160e01b600052602160045260246000fd5b9052565b600060e0820190508882528760208301528660408301528560608301528460808301528360a08301526127a960c0830184612751565b98975050505050505050565b82815260408101610e1e6020830184612751565b6000602082840312156127db57600080fd5b81518015158114610e1e57600080fd5b858152602081018590526040810184905260a0810161280d6060830185612751565b8260808301529695505050505050565b60006020828403121561282f57600080fd5b815160ff81168114610e1e57600080fd5b600181815b8085111561287b578160001904821115612861576128616126f3565b8085161561286e57918102915b93841c9390800290612845565b509250929050565b60008261289257506001610882565b8161289f57506000610882565b81600181146128b557600281146128bf576128db565b6001915050610882565b60ff8411156128d0576128d06126f3565b50506001821b610882565b5060208310610133831016604e8410600b84101617156128fe575081810a610882565b6129088383612840565b806000190482111561291c5761291c6126f3565b029392505050565b6000610e1e8383612883565b8082028115828204841417610882576108826126f3565b600060c0820190508782528660208301528560408301528460608301528360808301526108d260a0830184612751565b60005b8381101561299257818101518382015260200161297a565b50506000910152565b600082516129ad818460208701612977565b9190910192915050565b60208152600082518060208401526129d6816040850160208701612977565b601f01601f1916919091016040019291505056fea2646970667358221220927398be6ba13ed822ffd71f0e06604d56057496cd4aa5bfebae5e2875e63f6464736f6c63430008120033000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000003c37bdd7acae01a8b14e0ad8be52e7ea5066c27f000000000000000000000000807c110f18c41192eefe08b58c8ba4364219242f000000000000000000000000caf00d24ebdde93729aef967ffa5864eb3b9689b