0 txs
42 calls
constructor
constructor() payable
functions
getCurrentStamp
viewfunction getCurrentStamp(uint256 duration) view returns (uint256)
getDestination
viewfunction getDestination(address fromToken, uint256 destinationChain) view returns (address)
longCapDuration
viewfunction longCapDuration() view returns (uint256)
longCaps
viewfunction longCaps(address) view returns (uint256)
longCapsDeposit
viewfunction longCapsDeposit(address, uint256) view returns (uint256)
longCapsWithdraw
viewfunction longCapsWithdraw(address, uint256) view returns (uint256)
notary
viewfunction notary() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
shortCapDuration
viewfunction shortCapDuration() view returns (uint256)
shortCaps
viewfunction shortCaps(address) view returns (uint256)
shortCapsDeposit
viewfunction shortCapsDeposit(address, uint256) view returns (uint256)
shortCapsWithdraw
viewfunction shortCapsWithdraw(address, uint256) view returns (uint256)
xerc20TokenRegistry
viewfunction xerc20TokenRegistry(address) view returns (address)
addBridge
nonpayablefunction addBridge(address bridge, uint256 destinationChain)
addDestination
nonpayablefunction addDestination(address fromToken, uint256 destinationChain, address toToken)
deposit
nonpayablefunction deposit(address fromToken, uint256 destinationChain, address receiver, uint256 amount)
initialize
nonpayablefunction initialize(address initialOwner, address notary)
pause
nonpayablefunction pause()
removeBridge
nonpayablefunction removeBridge(uint256 destinationChain)
removeDestination
nonpayablefunction removeDestination(address fromToken, uint256 destinationChain, address toToken)
renounceOwnership
nonpayablefunction renounceOwnership()
setLongCap
nonpayablefunction setLongCap(address token, uint256 amount)
setLongCapDuration
nonpayablefunction setLongCapDuration(uint256 duration)
setNotary
nonpayablefunction setNotary(address notaryAddress)
setShortCap
nonpayablefunction setShortCap(address tokenAddress, uint256 amount)
setShortCapDuration
nonpayablefunction setShortCapDuration(uint256 duration)
setXERC20Lockbox
nonpayablefunction setXERC20Lockbox(address token, address xerc20Lockbox)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw(bytes, bytes rawReceipt, bytes proofSignature)
events
BridgeAdded
event BridgeAdded(address indexed bridge, uint256 destinationChain)
BridgeRemoved
event BridgeRemoved(address indexed bridge, uint256 destinationChain)
Deposited
event Deposited(uint256 destinationChain, address indexed destinationBridge, address indexed sender, address indexed receiver, address fromToken, address toToken, uint256 amount, uint256 nonce, (bytes32 name, bytes32 symbol, uint256 originChain, address originAddress) metadata)
DestinationAdded
event DestinationAdded(address indexed fromToken, address indexed toToken, uint256 toChain)
DestinationRemoved
event DestinationRemoved(address indexed fromToken, address indexed toToken, uint256 toChain)
Initialized
event Initialized(uint64 version)
LongCapChanged
event LongCapChanged(address indexed token, uint256 prevValue, uint256 newValue)
LongCapDurationChanged
event LongCapDurationChanged(uint256 prevValue, uint256 newValue)
NotaryChanged
event NotaryChanged(address indexed prevValue, address indexed newValue)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
ShortCapChanged
event ShortCapChanged(address indexed token, uint256 prevValue, uint256 newValue)
ShortCapDurationChanged
event ShortCapDurationChanged(uint256 prevValue, uint256 newValue)
Unpaused
event Unpaused(address account)
Withdrawn
event Withdrawn(bytes32 receiptHash, address indexed sender, address indexed receiver, address fromToken, address toToken, uint256 amount)
XERC20LockboxAdded
event XERC20LockboxAdded(address indexed token, address indexed lockbox)
errors
BridgeAlreadyAdded
error BridgeAlreadyAdded()
BridgeNotExist
error BridgeNotExist()
BurnFailed
error BurnFailed()
DestinationAlreadyExists
error DestinationAlreadyExists()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
InvalidAssetType
error InvalidAssetType()
InvalidChain
error InvalidChain()
InvalidContractAddress
error InvalidContractAddress()
InvalidFromTokenAddress
error InvalidFromTokenAddress()
InvalidInitialization
error InvalidInitialization()
LongCapExceeded
error LongCapExceeded(uint256 limit, uint256 current)
MintFailed
error MintFailed()
MultipleDeposits
error MultipleDeposits()
NotInitializing
error NotInitializing()
NullAddress
error NullAddress()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReceiptWrongChain
error ReceiptWrongChain(uint256 required, uint256 provided)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
ShortCapExceeded
error ShortCapExceeded(uint256 limit, uint256 current)
UnknownBridge
error UnknownBridge()
UnknownDestination
error UnknownDestination()
UnknownDestinationChain
error UnknownDestinationChain()
WithdrawalProofUsed
error WithdrawalProofUsed()
WrongDestinationBridge
error WrongDestinationBridge()
WrongSignature
error WrongSignature()
XERC20LockboxAlreadyAdded
error XERC20LockboxAlreadyAdded()
XERC20ZeroAddress
error XERC20ZeroAddress()
creation bytecode
0x60806040526200000e62000014565b620000c8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000655760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000c55780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6132ce80620000d86000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80638456cb591161010f578063a7130587116100a2578063e049c3a311610071578063e049c3a314610488578063ec10b0eb146104b3578063f2fde38b146104c6578063fd194991146104d957600080fd5b8063a713058714610424578063cc1acad91461044f578063d0f4871514610462578063d10ff6c51461047557600080fd5b806390971980116100de57806390971980146103d857806390d25074146103eb5780639d54c79d146103fe578063a394a0e61461041157600080fd5b80638456cb59146103555780638bc5d4d31461035d5780638cc13012146103885780638da5cb5b146103a857600080fd5b80634e58469d11610187578063715018a611610156578063715018a614610307578063776aaae91461030f5780637c38f94314610322578063802503d51461033557600080fd5b80634e58469d14610293578063570c20b7146102be5780635ac02ed0146102d15780635c975abb146102e457600080fd5b80633f4ba83a116101c35780633f4ba83a1461022457806341dfcc581461022c578063485cc9551461026d5780634abec9431461028057600080fd5b80630d4b8402146101ea5780632d8de281146101ff5780633e276d621461021b575b600080fd5b6101fd6101f8366004612d7c565b6104ec565b005b61020860095481565b6040519081526020015b60405180910390f35b61020860055481565b6101fd610502565b61025561023a366004612db5565b600f602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610212565b6101fd61027b366004612d7c565b610514565b6101fd61028e366004612dd2565b61063e565b6102086102a1366004612deb565b600760209081526000928352604080842090915290825290205481565b6101fd6102cc366004612deb565b610652565b6101fd6102df366004612dd2565b610664565b6000805160206132598339815191525460ff166040519015158152602001610212565b6101fd610675565b6101fd61031d366004612dd2565b610687565b610255610330366004612deb565b610698565b610208610343366004612db5565b600a6020526000908152604090205481565b6101fd610703565b61020861036b366004612deb565b600b60209081526000928352604080842090915290825290205481565b610208610396366004612db5565b60066020526000908152604090205481565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610255565b6101fd6103e6366004612e17565b610713565b6101fd6103f9366004612e59565b61072b565b600154610255906001600160a01b031681565b6101fd61041f366004612db5565b6107ae565b610208610432366004612deb565b600c60209081526000928352604080842090915290825290205481565b6101fd61045d366004612deb565b6107bf565b6101fd610470366004612f52565b6107d1565b6101fd610483366004612deb565b610979565b610208610496366004612deb565b600860209081526000928352604080842090915290825290205481565b6101fd6104c1366004612e17565b61098b565b6101fd6104d4366004612db5565b61099e565b6102086104e7366004612dd2565b6109d9565b6104f46109f0565b6104fe8282610a4b565b5050565b61050a6109f0565b610512610b2d565b565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff1660008115801561055a5750825b905060008267ffffffffffffffff1660011480156105775750303b155b905081158015610585575080155b156105a35760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156105cd57845460ff60401b1916600160401b1785555b6105d687610b8d565b6105de610b9e565b6105e6610bae565b6105ef86610bbe565b831561063557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6106466109f0565b61064f81610bd9565b50565b61065a6109f0565b6104fe8282610c1a565b61066c6109f0565b61064f81610cfb565b61067d6109f0565b6105126000610d8d565b61068f6109f0565b61064f81610dfe565b600081815260036020908152604080832054905160049284926106cb92889246926001600160a01b031691899101613029565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b61070b6109f0565b610512610e3f565b61071b6109f0565b610726838383610e88565b505050565b610733610fe1565b61073b611019565b61074361104a565b61074d84826110bb565b60006107598585610698565b6001600160a01b03161461077857610773848484846112d1565b610791565b6040516340989b0560e01b815260040160405180910390fd5b6107a8600160008051602061327983398151915255565b50505050565b6107b66109f0565b61064f816114ef565b6107c76109f0565b6104fe8282611572565b6107d9610fe1565b6107e1611019565b60048035810190602435016000806107f88361160b565b915091504682606001511461083457606082015160405163f45e832160e01b815246600482015260248101919091526044015b60405180910390fd5b600061083f85611838565b60208401519091506001600160a01b031661086d5760405163a710429d60e01b815260040160405180910390fd5b60408301516001600160a01b0316301461089a576040516335946cb160e11b815260040160405180910390fd5b6020808401518251600090815260039092526040909120546001600160a01b039081169116146108dd57604051632fba485360e01b815260040160405180910390fd5b87876040516108ed929190613062565b6040519081900390208352600160208201819052835160c0830152610100822090546001600160a01b0316610922828961187c565b6001600160a01b031614610949576040516306ad488360e31b815260040160405180910390fd5b610955848484846118a0565b505050505050610972600160008051602061327983398151915255565b5050505050565b6109816109f0565b6104fe828261192b565b6109936109f0565b6107268383836119c1565b6109a66109f0565b6001600160a01b0381166109d057604051631e4fbdf760e01b81526000600482015260240161082b565b61064f81610d8d565b6000816109e68142613088565b6106fd91906130aa565b33610a227f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146105125760405163118cdaa760e01b815233600482015260240161082b565b6001600160a01b0382161580610a6857506001600160a01b038116155b15610a865760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b038281166000908152600f60205260409020541615610abf57604051633d9705b960e21b815260040160405180910390fd5b806001600160a01b0316826001600160a01b03167f450f0b949a93c86abd50a59d3c2474dbfad099708b7c7355ad28f4a237de3ba160405160405180910390a36001600160a01b039182166000908152600f6020526040902080546001600160a01b03191691909216179055565b610b35611ad7565b600080516020613259833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610b95611b07565b61064f81611b50565b610ba6611b07565b610512611b58565b610bb6611b07565b610512611b79565b610bc7816114ef565b61064f610e1060055562015180600955565b60055460408051918252602082018390527fcd5dd143ec4e58a4fd610459b592e7a0df095b56ff28113b33ef454b7be6d235910160405180910390a1600555565b6001600160a01b038216610c415760405163e99d5ac560e01b815260040160405180910390fd5b80600003610c625760405163057f3fa760e51b815260040160405180910390fd5b6000818152600360205260409020546001600160a01b031615610c9857604051631b906d1160e11b815260040160405180910390fd5b60008181526003602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591518381527f10916f5c971b65b1a3f05d1a63bfc558ca4d659670f408b6de05007215f1812a91015b60405180910390a25050565b6000818152600360205260409020546001600160a01b0316610d30576040516328ec10bd60e21b815260040160405180910390fd5b60008181526003602090815260409182902080546001600160a01b0319811690915591518381526001600160a01b039092169182917ffc5b6fb2b8ba31620717843fd7a36a4ad996612ff9f3ece7cba2900efb43bc2b9101610cef565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60095460408051918252602082018390527fc318ed6288cdf2cd1dec4feb3d48f84828f062d9b812afb65cf43135f94289ab910160405180910390a1600955565b610e47611019565b600080516020613259833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610b6f565b6000828152600360205260409020546001600160a01b0316610ebd576040516340989b0560e01b815260040160405180910390fd5b6001600160a01b0383161580610eda57506001600160a01b038116155b15610ef85760405163e99d5ac560e01b815260040160405180910390fd5b6000828152600360209081526040808320549051610f2892879246926001600160a01b0390911691889101613029565b60408051601f198184030181529181528151602092830120600081815260049093529120549091506001600160a01b031615610f7757604051634268025960e01b815260040160405180910390fd5b60008181526004602090815260409182902080546001600160a01b0319166001600160a01b038681169182179092559251868152908716917f94e4f3e075f32b001fd7eb0c3c1605dc3c4d8f1c7a90c514978b4d6ba680d33891015b60405180910390a350505050565b60008051602061327983398151915280546001190161101357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6000805160206132598339815191525460ff16156105125760405163d93c066560e01b815260040160405180910390fd5b600d546001600160a01b0316158015906110655750600e5415155b156110a357600d546001600160a01b031632148015611085575043600e54145b156110a35760405163b782497f60e01b815260040160405180910390fd5b600d80546001600160a01b0319163217905543600e55565b6001600160a01b03821660009081526006602090815260408083205460079092528220600554919284926110ee906109d9565b81526020019081526020016000205461110791906130c1565b111561117b576001600160a01b0382166000908152600660209081526040808320546007909252822060055491928492611140906109d9565b81526020019081526020016000205461115991906130c1565b60405163074d4a3b60e21b81526004810192909252602482015260440161082b565b6001600160a01b03821660009081526007602052604081206005548392906111a2906109d9565b815260200190815260200160002060008282546111bf91906130c1565b90915550506001600160a01b0382166000908152600a6020908152604080832054600b9092528220600954919284926111f7906109d9565b81526020019081526020016000205461121091906130c1565b1115611284576001600160a01b0382166000908152600a6020908152604080832054600b909252822060095491928492611249906109d9565b81526020019081526020016000205461126291906130c1565b60405163084c5e0d60e21b81526004810192909252602482015260440161082b565b6001600160a01b0382166000908152600b602052604081206009548392906112ab906109d9565b815260200190815260200160002060008282546112c891906130c1565b90915550505050565b6000838152600360205260409020546001600160a01b0316611306576040516340989b0560e01b815260040160405180910390fd5b6001600160a01b038085166000908152600f60205260409020543391168061133857611333868385611b81565b611344565b61134481878486611ced565b600060405180608001604052806113c1896001600160a01b03166306fdde036040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611394573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113bc91908101906130f8565b611e08565b8152602001611409896001600160a01b03166395d89b416040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611394573d6000803e3d6000fd5b8152600060208083018290526040928301829052815460010182558982526003905220549091506001600160a01b038681169185821691167fa8df0e3d5a5de1c918dba88937a3dec15268bed6b3d0133191b9b3a7d86b2a9b898b61146e8183610698565b600054604080519485526001600160a01b039384166020808701919091529284168582015260608086018e90526080860192909252895160a08601529189015160c08501529088015160e0840152870151166101008201526101200160405180910390a450505050505050565b600160008051602061327983398151915255565b6001600160a01b0381166115165760405163e99d5ac560e01b815260040160405180910390fd5b6001546040516001600160a01b038084169216907fb83b1538cdec62b04dcd2c181a62e2ad93727bbda41580b2cd4cb8ce6e8c09a690600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382166115995760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b03821660008181526006602090815260409182902054825181815291820185905292917f31df6ae5b1f4d8b2d9f67caa6cde087b4f3b9e12dac0aaf9a3f27d247cd23200910160405180910390a2506001600160a01b03909116600090815260066020526040902055565b604080516101c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915260008061169261168d8560206130c1565b611e27565b90508061169e81611e3c565b91506116b3816116ae818561316f565b611e47565b6001146117025760405162461bcd60e51b815260206004820181905260248201527f457468657265756d56657269666965723a207478206973207265766572746564604482015260640161082b565b5061170c81611e3c565b90508061171881611e3c565b9150600061172582611e27565b90505b828110156117cf578061173a81611e3c565b915060006117488783611e63565b9050600081600181111561175e5761175e613182565b146117c857600086600181111561177757611777613182565b146117c45760405162461bcd60e51b815260206004820152601f60248201527f457468657265756d56657269666965723a206d756c7469706c65206c6f677300604482015260640161082b565b8095505b5050611728565b60008460018111156117e3576117e3613182565b036118305760405162461bcd60e51b815260206004820152601e60248201527f457468657265756d56657269666965723a206d697373696e67206c6f67730000604482015260640161082b565b505050915091565b611840612d23565b611848612d23565b60006118558460206130c1565b90506020818337604081019050608081604084013760a00160208160e08401375092915050565b600080600061188b858561201f565b9150915061189881612064565b509392505050565b60008181526002602052604090205460ff16156118d05760405163e69371a360e01b815260040160405180910390fd5b6000818152600260205260409020805460ff191660019081179091558360018111156118fe576118fe613182565b036119125761190d84836121ae565b6107a8565b6040516311b2a5ab60e11b815260040160405180910390fd5b6001600160a01b0382166119525760405163e99d5ac560e01b815260040160405180910390fd5b6001600160a01b0382166000818152600a60209081526040918290205482519081529081018490527f9879bf40436c98ee8b389ce84c33503f4494a999077f6fb7aa6c4f63de6a9adf910160405180910390a26001600160a01b039091166000908152600a6020526040902055565b6000828152600360205260409020546001600160a01b03166119f6576040516340989b0560e01b815260040160405180910390fd5b6000828152600360209081526040808320549051611a2692879246926001600160a01b0390911691889101613029565b60408051808303601f190181529181528151602092830120600081815260049093529120549091506001600160a01b03838116911614611a7957604051631edd9cbb60e31b815260040160405180910390fd5b6000818152600460205260409081902080546001600160a01b0319169055516001600160a01b0383811691908616907f31358c78ed429b28e47c9e9546aeafccaea26575d8043cb50960c67d0f488b2690610fd39087815260200190565b6000805160206132598339815191525460ff1661051257604051638dfc202b60e01b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661051257604051631afcd79f60e31b815260040160405180910390fd5b6109a6611b07565b611b60611b07565b600080516020613259833981519152805460ff19169055565b6114db611b07565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908516906370a0823190602401602060405180830381865afa158015611bcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bef9190613198565b604051632770a7eb60e21b81526001600160a01b0385811660048301526024820185905291925090851690639dc29fac90604401600060405180830381600087803b158015611c3d57600080fd5b505af1158015611c51573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03868116600483015260009350871691506370a0823190602401602060405180830381865afa158015611c9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cc29190613198565b905081611ccf84836130c1565b1461097257604051631bc5aabf60e21b815260040160405180910390fd5b6000846001600160a01b031663b20a0fb96040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5191906131b1565b90506001600160a01b038116611d7a576040516331ff900360e01b815260040160405180910390fd5b611d8f6001600160a01b03851684308561241e565b611da36001600160a01b0385168684612489565b60405163b6b55f2560e01b8152600481018390526001600160a01b0386169063b6b55f2590602401600060405180830381600087803b158015611de557600080fd5b505af1158015611df9573d6000803e3d6000fd5b50505050610972813084611b81565b805160009082908203611e1e5750600092915050565b50506020015190565b6000611e328261259e565b6106fd90836130c1565b6000611e3282612618565b6000611e528361259e565b611e5c908361316f565b9392505050565b600080611e6f83611e27565b9050600081611e7d81611e3c565b9250611e88816126bb565b91506000905080808085611e9b81611e3c565b9650611ea681612618565b608614611ebd5760009750505050505050506106fd565b611ec681611e27565b905060018101359450611ed881611e3c565b905060018101356001600160a01b03169350611ef381611e3c565b905060018101356001600160a01b03169250611f0e81611e3c565b905060018101356001600160a01b03169150611f2981611e3c565b9050868114611f3757600080fd5b506000611f4387611e27565b9050611f4e87611e3c565b96506000611f5c828961316f565b905060007fa8df0e3d5a5de1c918dba88937a3dec15268bed6b3d0133191b9b3a7d86b2a9b8703611f94575060019850610120611fa6565b600099505050505050505050506106fd565b808214611fbf57600099505050505050505050506106fd565b50813560608c01819052611fd46020846130c1565b9250611fe160208361316f565b91505060c08b01818382375050506001600160a01b0392831660408a01529382166020890152811660808801529190911660a0860152505092915050565b60008082516041036120555760208301516040840151606085015160001a612049878285856126c8565b9450945050505061205d565b506000905060025b9250929050565b600081600481111561207857612078613182565b036120805750565b600181600481111561209457612094613182565b036120e15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161082b565b60028160048111156120f5576120f5613182565b036121425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161082b565b600381600481111561215657612156613182565b0361064f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161082b565b60c08201516001600160a01b03166121d95760405163316484bf60e11b815260040160405180910390fd5b8160c001516001600160a01b03166121f98360e001518360000151610698565b6001600160a01b03161461222057604051631edd9cbb60e31b815260040160405180910390fd5b6122338260e0015183610100015161278c565b60e08201516001600160a01b039081166000908152600f60205260409020541680612275576122708360e001518460a00151856101000151612906565b61238f565b6000816001600160a01b031663b20a0fb96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d991906131b1565b90506001600160a01b038116612302576040516331ff900360e01b815260040160405180910390fd5b6123128130866101000151612906565b60a084015161010085015160405163040b850f60e31b81526001600160a01b0385169263205c28789261235b926004016001600160a01b03929092168252602082015260400190565b600060405180830381600087803b15801561237557600080fd5b505af1158015612389573d6000803e3d6000fd5b50505050505b8260a001516001600160a01b031683608001516001600160a01b03167fda2b5a532a1cd1f21212a3628c424c2407bf255af4e5b5d6ffbf02f9c2aa4a2e85600001518660c001518760e0015188610100015160405161241194939291909384526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a3505050565b6040516001600160a01b03808516602483015283166044820152606481018290526107a89085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612a71565b8015806125035750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156124dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125019190613198565b155b61256e5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161082b565b6040516001600160a01b03831660248201526044810182905261072690849063095ea7b360e01b90606401612452565b60008135811a60808110156125b65750600092915050565b60b88110806125d1575060c081108015906125d1575060f881105b156125df5750600192915050565b60c081101561260c576125f4600160b86131ce565b6126019060ff168261316f565b611e5c9060016130c1565b6125f4600160f86131ce565b6000808235811a608081101561263157600191506126b4565b60b88110156126575761264560808261316f565b6126509060016130c1565b91506126b4565b60c0811015612682576001939093019283356008602083900360b701021c810160b5190191506126b4565b60f88110156126965761264560c08261316f565b6001939093019283356008602083900360f701021c810160f5190191505b5092915050565b60006106fd826015612b46565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156126ff5750600090506003612783565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612753573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661277c57600060019250925050612783565b9150600090505b94509492505050565b6001600160a01b03821660009081526006602090815260408083205460089092528220600554919284926127bf906109d9565b8152602001908152602001600020546127d891906130c1565b1115612811576001600160a01b0382166000908152600660209081526040808320546008909252822060055491928492611140906109d9565b6001600160a01b0382166000908152600860205260408120600554839290612838906109d9565b8152602001908152602001600020600082825461285591906130c1565b90915550506001600160a01b0382166000908152600a6020908152604080832054600c90925282206009549192849261288d906109d9565b8152602001908152602001600020546128a691906130c1565b11156128df576001600160a01b0382166000908152600a6020908152604080832054600c909252822060095491928492611249906109d9565b6001600160a01b0382166000908152600c602052604081206009548392906112ab906109d9565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908516906370a0823190602401602060405180830381865afa158015612950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129749190613198565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908516906340c10f1990604401600060405180830381600087803b1580156129c257600080fd5b505af11580156129d6573d6000803e3d6000fd5b50506040516370a0823160e01b81526001600160a01b03868116600483015260009350871691506370a0823190602401602060405180830381865afa158015612a23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a479190613198565b905080612a5484846130c1565b146109725760405162ec6f7b60e31b815260040160405180910390fd5b6000612ac6826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612b939092919063ffffffff16565b9050805160001480612ae7575080806020019051810190612ae791906131e7565b6107265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161082b565b60008082118015612b58575060218211155b612b6157600080fd5b6000612b6c8461259e565b90506000612b7a828561316f565b94909101356020949094036008029390931c9392505050565b6060612ba28484600085612baa565b949350505050565b606082471015612c0b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161082b565b600080866001600160a01b03168587604051612c279190613209565b60006040518083038185875af1925050503d8060008114612c64576040519150601f19603f3d011682016040523d82523d6000602084013e612c69565b606091505b5091509150612c7a87838387612c85565b979650505050505050565b60608315612cf4578251600003612ced576001600160a01b0385163b612ced5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161082b565b5081612ba2565b612ba28383815115612d095781518083602001fd5b8060405162461bcd60e51b815260040161082b9190613225565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6001600160a01b038116811461064f57600080fd5b60008060408385031215612d8f57600080fd5b8235612d9a81612d67565b91506020830135612daa81612d67565b809150509250929050565b600060208284031215612dc757600080fd5b8135611e5c81612d67565b600060208284031215612de457600080fd5b5035919050565b60008060408385031215612dfe57600080fd5b8235612e0981612d67565b946020939093013593505050565b600080600060608486031215612e2c57600080fd5b8335612e3781612d67565b9250602084013591506040840135612e4e81612d67565b809150509250925092565b60008060008060808587031215612e6f57600080fd5b8435612e7a81612d67565b9350602085013592506040850135612e9181612d67565b9396929550929360600135925050565b60008083601f840112612eb357600080fd5b50813567ffffffffffffffff811115612ecb57600080fd5b60208301915083602082850101111561205d57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612f2257612f22612ee3565b604052919050565b600067ffffffffffffffff821115612f4457612f44612ee3565b50601f01601f191660200190565b600080600080600060608688031215612f6a57600080fd5b853567ffffffffffffffff80821115612f8257600080fd5b612f8e89838a01612ea1565b90975095506020880135915080821115612fa757600080fd5b612fb389838a01612ea1565b90955093506040880135915080821115612fcc57600080fd5b508601601f81018813612fde57600080fd5b8035612ff1612fec82612f2a565b612ef9565b81815289602083850101111561300657600080fd5b816020840160208301376000602083830101528093505050509295509295909350565b6bffffffffffffffffffffffff19606095861b8116825260148201949094529190931b9091166034820152604881019190915260680190565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b6000826130a557634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176106fd576106fd613072565b808201808211156106fd576106fd613072565b60005b838110156130ef5781810151838201526020016130d7565b50506000910152565b60006020828403121561310a57600080fd5b815167ffffffffffffffff81111561312157600080fd5b8201601f8101841361313257600080fd5b8051613140612fec82612f2a565b81815285602083850101111561315557600080fd5b6131668260208301602086016130d4565b95945050505050565b818103818111156106fd576106fd613072565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156131aa57600080fd5b5051919050565b6000602082840312156131c357600080fd5b8151611e5c81612d67565b60ff82811682821603908111156106fd576106fd613072565b6000602082840312156131f957600080fd5b81518015158114611e5c57600080fd5b6000825161321b8184602087016130d4565b9190910192915050565b60208152600082518060208401526132448160408501602087016130d4565b601f01601f1916919091016040019291505056fecd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122082f7c11eed94f3b9e719d1a3e5f7da5ee1bb3e625abc6505d59d0f4243aad75864736f6c63430008140033