0 txs
2 calls
constructor
No constructor.
functions
appId
viewfunction appId() view returns (uint256)
ccTransferRequests
viewfunction ccTransferRequests(bytes32) view returns (uint256 inputAmount, address recipientAddress, uint256 fee, uint256 speed, bool isUsed)
chainId
viewfunction chainId() view returns (uint256)
isRequestUsed
viewfunction isRequestUsed(bytes32 _txId) view returns (bool)
isTeleporter
viewfunction isTeleporter(address) view returns (bool)
lockerPercentageFee
viewfunction lockerPercentageFee() view returns (uint256)
lockers
viewfunction lockers() view returns (address)
owner
viewfunction owner() view returns (address)
protocolPercentageFee
viewfunction protocolPercentageFee() view returns (uint256)
relay
viewfunction relay() view returns (address)
rewardDistributor
viewfunction rewardDistributor() view returns (address)
specialTeleporter
viewfunction specialTeleporter() view returns (address)
startingBlockNumber
viewfunction startingBlockNumber() view returns (uint256)
teleBTC
viewfunction teleBTC() view returns (address)
thirdParty
viewfunction thirdParty(bytes32) view returns (uint256)
thirdPartyAddress
viewfunction thirdPartyAddress(uint256) view returns (address)
thirdPartyFee
viewfunction thirdPartyFee(uint256) view returns (uint256)
treasury
viewfunction treasury() view returns (address)
initialize
nonpayablefunction initialize(uint256 _startingBlockNumber, uint256 _protocolPercentageFee, uint256 _lockerPercentageFee, uint256 _chainId, uint256 _appId, address _relay, address _lockers, address _teleBTC, address _treasury)
renounceOwnership
nonpayablefunction renounceOwnership()
setLockerPercentageFee
nonpayablefunction setLockerPercentageFee(uint256 _lockerPercentageFee)
setLockers
nonpayablefunction setLockers(address _lockers)
setProtocolPercentageFee
nonpayablefunction setProtocolPercentageFee(uint256 _protocolPercentageFee)
setRelay
nonpayablefunction setRelay(address _relay)
setRewardDistributor
nonpayablefunction setRewardDistributor(address _rewardDistributor)
setStartingBlockNumber
nonpayablefunction setStartingBlockNumber(uint256 _startingBlockNumber)
setTeleBTC
nonpayablefunction setTeleBTC(address _teleBTC)
setTeleporter
nonpayablefunction setTeleporter(address _teleporter, bool _isTeleporter)
setThirdPartyAddress
nonpayablefunction setThirdPartyAddress(uint256 _thirdPartyId, address _thirdPartyAddress)
setThirdPartyFee
nonpayablefunction setThirdPartyFee(uint256 _thirdPartyId, uint256 _thirdPartyFee)
setTreasury
nonpayablefunction setTreasury(address _treasury)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
wrap
payablefunction wrap(tuple _txAndProof, bytes _lockerLockingScript) payable returns (bool)
events
Initialized
event Initialized(uint8 version)
NewLockers
event NewLockers(address oldLockers, address newLockers)
NewProtocolPercentageFee
event NewProtocolPercentageFee(uint256 oldProtocolPercentageFee, uint256 newProtocolPercentageFee)
NewRelay
event NewRelay(address oldRelay, address newRelay)
NewTeleBTC
event NewTeleBTC(address oldTeleBTC, address newTeleBTC)
NewThirdPartyAddress
event NewThirdPartyAddress(uint256 thirdPartyId, address oldThirdPartyAddress, address newThirdPartyAddress)
NewThirdPartyFee
event NewThirdPartyFee(uint256 thirdPartyId, uint256 oldThirdPartyFee, uint256 newThirdPartyFee)
NewTreasury
event NewTreasury(address oldTreasury, address newTreasury)
NewWrap
event NewWrap(bytes32 bitcoinTxId, bytes indexed lockerLockingScript, address lockerTargetAddress, address indexed user, address teleporter, uint256[2] amounts, uint256[4] fees, uint256 thirdPartyId, uint256 destinationChainId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ZeroAddress
error ZeroAddress()
creation bytecode
0x608060405234801561001057600080fd5b506142de806100206000396000f3fe6080604052600436106101825760003560e01c806303c673591461018e578063136dfb63146101d35780631812adb6146101f55780631876dec4146102195780631e7107c71461025157806359fd0b0c1461027157806361d027b31461029e57806363908020146102be5780636600203d146102d457806370872aa5146102f4578063715018a61461030a578063765f02331461031f57806379023909146103a85780637ed55748146103c85780637f0f1817146103e857806380afdea81461040857806380bc47261461041e5780638d3d78cd1461043e5780638d5fc1d41461045e5780638da5cb5b1461047e5780638f9eb78b146104935780639a8a0592146104b3578063a1809b95146104c9578063a9b68271146104e9578063acc2166a1461051f578063b07acef21461053f578063b14d35321461055f578063b59589d11461057f578063b866d6ea1461059f578063c805f68b146105b2578063e9770e93146105d2578063f0f44260146105ff578063f2fde38b1461061f57600080fd5b3661018957005b600080fd5b34801561019a57600080fd5b506101be6101a9366004613b4a565b60a66020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156101df57600080fd5b506101f36101ee366004613d5a565b61063f565b005b34801561020157600080fd5b5061020b60035481565b6040519081526020016101ca565b34801561022557600080fd5b50600554610239906001600160a01b031681565b6040516001600160a01b0390911681526020016101ca565b34801561025d57600080fd5b506101f361026c366004613bd6565b6107af565b34801561027d57600080fd5b5061020b61028c366004613bd6565b60a16020526000908152604090205481565b3480156102aa57600080fd5b50600854610239906001600160a01b031681565b3480156102ca57600080fd5b5061020b60a45481565b3480156102e057600080fd5b506101f36102ef366004613bd6565b6107c3565b34801561030057600080fd5b5061020b60005481565b34801561031657600080fd5b506101f36107d4565b34801561032b57600080fd5b5061037661033a366004613bd6565b6009602052600090815260409020805460018201546002830154600384015460049094015492936001600160a01b039092169290919060ff1685565b604080519586526001600160a01b0390941660208601529284019190915260608301521515608082015260a0016101ca565b3480156103b457600080fd5b50600754610239906001600160a01b031681565b3480156103d457600080fd5b506101f36103e3366004613bd6565b6107de565b3480156103f457600080fd5b506101f3610403366004613b4a565b6107ef565b34801561041457600080fd5b5061020b60025481565b34801561042a57600080fd5b506101be610439366004613bd6565b610800565b34801561044a57600080fd5b50600654610239906001600160a01b031681565b34801561046a57600080fd5b506101f3610479366004613d15565b610829565b34801561048a57600080fd5b5061023961083f565b34801561049f57600080fd5b506101f36104ae366004613d39565b61084e565b3480156104bf57600080fd5b5061020b60015481565b3480156104d557600080fd5b506101f36104e4366004613b4a565b610860565b3480156104f557600080fd5b50610239610504366004613bd6565b60a2602052600090815260409020546001600160a01b031681565b34801561052b57600080fd5b5060a554610239906001600160a01b031681565b34801561054b57600080fd5b506101f361055a366004613b82565b61088a565b34801561056b57600080fd5b506101f361057a366004613b4a565b6108bd565b34801561058b57600080fd5b50600454610239906001600160a01b031681565b6101be6105ad366004613c06565b6108ce565b3480156105be57600080fd5b506101f36105cd366004613b4a565b610d2d565b3480156105de57600080fd5b5061020b6105ed366004613bd6565b60a36020526000908152604090205481565b34801561060b57600080fd5b506101f361061a366004613b4a565b610d3e565b34801561062b57600080fd5b506101f361063a366004613b4a565b610d4f565b600a54610100900460ff161580801561065f5750600a54600160ff909116105b806106795750303b1580156106795750600a5460ff166001145b6106e15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600a805460ff19166001179055801561070457600a805461ff0019166101001790555b61070c610dc5565b610714610df4565b600187905560028690556107278a610e23565b61073089610e8b565b61073988610f35565b61074285610fa1565b61074b84611033565b610754836110c5565b61075d82611157565b80156107a357600a805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b6107b76111e9565b6107c081610e23565b50565b6107cb6111e9565b6107c081610f35565b6107dc6111e9565b565b6107e66111e9565b6107c081610e8b565b6107f76111e9565b6107c0816110c5565b60008181526009602052604081206004015460ff16610820576000610823565b60015b92915050565b6108316111e9565b61083b8282611248565b5050565b603d546001600160a01b031690565b6108566111e9565b61083b82826112e4565b6108686111e9565b60a580546001600160a01b0319166001600160a01b0392909216919091179055565b6108926111e9565b6001600160a01b0391909116600090815260a660205260409020805460ff1916911515919091179055565b6108c56111e9565b6107c081611033565b60006108d8611345565b33600090815260a6602052604090205460ff166109375760405162461bcd60e51b815260206004820181905260248201527f43435472616e73666572526f757465723a20696e76616c69642073656e64657260448201526064016106d8565b600054846080015110156109995760405162461bcd60e51b8152602060048201526024808201527f43435472616e73666572526f757465723a207265717565737420697320746f6f604482015263081bdb1960e21b60648201526084016106d8565b60006109b7856000015186602001518760400151886060015161139f565b60008181526009602052604090206004015490915060ff1615610a335760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a20726571756573742068617320626560448201526d656e2075736564206265666f726560901b60648201526084016106d8565b60608501516001600160e01b03191615610aa05760405162461bcd60e51b815260206004820152602860248201527f43435472616e73666572526f757465723a206c6f636b2074696d65206973206e6044820152676f6e202d7a65726f60c01b60648201526084016106d8565b610ae484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050604087015183611507565b610afc8186608001518760a001518860c0015161195f565b610b695760405162461bcd60e51b815260206004820152603860248201527f43435472616e73666572526f757465723a207472616e73616374696f6e2068616044820152771cc81b9bdd081899595b88199a5b985b1a5e9959081e595d60421b60648201526084016106d8565b6000806000806000610bb289898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611add915050565b60008b81526009602052604090819020600101549051959a50939850919650945092506001600160a01b031690610bec908b908b90613e67565b60405180910390207fdebe45dc811f213ee5572218ab9c9e7d78fac393b0ca5c50ea9edbe5c8bcb61788600560009054906101000a90046001600160a01b03166001600160a01b031663c4d10b6a8e8e6040518363ffffffff1660e01b8152600401610c59929190613fb2565b60206040518083038186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190613b66565b60408051808201825260008d8152600960209081528382205483528083018e905283516080810185528c81528082018b90528085018e9052606081018c90528f835260a390915290839020546001549351610d0a9695943394939291613ef5565b60405180910390a360019650505050505050610d266001606f55565b9392505050565b610d356111e9565b6107c081610fa1565b610d466111e9565b6107c081611157565b610d576111e9565b6001600160a01b038116610dbc5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106d8565b6107c081611ba6565b600a54610100900460ff16610dec5760405162461bcd60e51b81526004016106d890614022565b6107dc611bf8565b600a54610100900460ff16610e1b5760405162461bcd60e51b81526004016106d890614022565b6107dc611c28565b6000548111610e865760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a206c6f77207374617274696e67426c60448201526837b1b5a73ab6b132b960b91b60648201526084016106d8565b600055565b806127101015610ef45760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a2070726f746f636f6c20666565206960448201526d73206f7574206f662072616e676560901b60648201526084016106d8565b60035460408051918252602082018390527f7d205f60891f60851c61cd244ba387d72b6589e7c0ac41b9d909ab0ce2c2a53b910160405180910390a1600355565b806127101015610f9c5760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a206c6f636b6572206665652069732060448201526b6f7574206f662072616e676560a01b60648201526084016106d8565b60a455565b806001600160a01b038116610fc95760405163d92e233d60e01b815260040160405180910390fd5b6004546040517f4c28a3f61a715259c4dc930c23e7423b8fa52e13232c061a6e488729c66184f491611008916001600160a01b03909116908590613ec2565b60405180910390a150600480546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03811661105b5760405163d92e233d60e01b815260040160405180910390fd5b6005546040517ffa021c2ec0f46429a53e7f88b88065e40001f50c9d38b2e8b713beaf9828d4c39161109a916001600160a01b03909116908590613ec2565b60405180910390a150600580546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166110ed5760405163d92e233d60e01b815260040160405180910390fd5b6006546040517f36a4c08a38b736dcecb6c328dba61238529620e83ccb23db2cc43cd34ec260969161112c916001600160a01b03909116908590613ec2565b60405180910390a150600680546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03811661117f5760405163d92e233d60e01b815260040160405180910390fd5b6008546040517f567657fa3f286518b318f4a29870674f433f622fdfc819691acb13105b228225916111be916001600160a01b03909116908590613ec2565b60405180910390a150600880546001600160a01b0319166001600160a01b0392909216919091179055565b336111f261083f565b6001600160a01b0316146107dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106d8565b600082815260a26020526040908190205490517f1e73962bcff5b98a9ac70c9b0f71fbb31dc0f5a09348c6d3ceab164169a9e729916112ae9185916001600160a01b03169085909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a1600091825260a2602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b600082815260a16020908152604091829020548251858152918201529081018290527f188adabf806a6b6d814acc1dbd9f09e5a251c8c065d6285749a5824e4579b6459060600160405180910390a1600091825260a1602052604090912055565b6002606f5414156113985760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016106d8565b6002606f55565b6000806113b66113b1825b8790611c4f565b611c73565b90506113c762ffffff198216611dc9565b156114115760405162461bcd60e51b815260206004820152601a602482015279109a5d18dbda5b92195b1c195c8e881d9a5b881a5cc81b9d5b1b60321b60448201526064016106d8565b600060028787878760405160200161142c9493929190613e14565b60408051601f198184030181529082905261144691613e77565b602060405180830381855afa158015611463573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906114869190613bee565b9050600060028260405160200161149f91815260200190565b60408051601f19818403018152908290526114b991613e77565b602060405180830381855afa1580156114d6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906114f99190613bee565b93505050505b949350505050565b60055460405163aff2faa360e01b81526001600160a01b039091169063aff2faa390611537908690600401613fe1565b60206040518083038186803b15801561154f57600080fd5b505afa158015611563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115879190613bba565b6115fb576040805162461bcd60e51b81526020600482015260248101919091527f43435472616e73666572526f757465723a206e6f206c6f636b6572207769746860448201527f2074686520676976656e206c6f636b696e67207363726970742065786973747360648201526084016106d8565b6116386040518060a001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000151581525090565b60606116448486611dd5565b6001600160401b0390911683528051909150601c146116a55760405162461bcd60e51b815260206004820152601d60248201527f43435472616e73666572526f757465723a20696e76616c6964206c656e00000060448201526064016106d8565b81516117025760405162461bcd60e51b815260206004820152602660248201527f43435472616e73666572526f757465723a20696e70757420616d6f756e74206960448201526573207a65726f60d01b60648201526084016106d8565b60015461170e82611f50565b61ffff16146117715760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a20636861696e206964206973206e6f6044820152681d0818dbdc9c9958dd60ba1b60648201526084016106d8565b60025461177d82611f6b565b60ff16146117dd5760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a20617070206964206973206e6f742060448201526618dbdc9c9958dd60ca1b60648201526084016106d8565b60006117e882611f85565b62ffffff16905082600001518111156118415760405162461bcd60e51b815260206004820152601b60248201527a43435472616e73666572526f757465723a2077726f6e672066656560281b60448201526064016106d8565b6040830181905261185182611fa0565b6001600160a01b0316602084015261186882611fbb565b60ff1660608401819052156118cf5760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a207370656564206973206f7574206f604482015266662072616e676560c81b60648201526084016106d8565b6118d882611fca565b600085815260a36020908152604080832060ff949094169093556001608087018181529783526009825291839020865181559086015191810180546001600160a01b0319166001600160a01b03909316929092179091559084015160028201556060909301516003840155505090516004909101805460ff19169115159190911790555050565b6004805460405163d0a8973960e01b81529182018590526000602483018190529182916001600160a01b03169063d0a897399060440160206040518083038186803b1580156119ad57600080fd5b505afa1580156119c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e59190613bee565b905080341015611a4c5760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a207061696420666565206973206e6f60448201526b1d081cdd59999a58da595b9d60a21b60648201526084016106d8565b600454604051600091611aa9916001600160a01b0390911690611a79908a908a908a908a90602401613f82565b60408051601f198184030181529190526020810180516001600160e01b0316634354da2560e01b17905284611fd9565b9050611abe33611ab98434614187565b611fff565b80806020019051810190611ad29190613bba565b979650505050505050565b6000806000806000611aef878761211a565b60065460008c8152600960205260409081902060010154905163a9059cbb60e01b8152969b5094995092975090955093506001600160a01b039081169263a9059cbb92611b429216908990600401613edc565b602060405180830381600087803b158015611b5c57600080fd5b505af1158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b949190613bba565b509295509295909350565b6001606f55565b603d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a54610100900460ff16611c1f5760405162461bcd60e51b81526004016106d890614022565b6107dc33611ba6565b600a54610100900460ff16611b9f5760405162461bcd60e51b81526004016106d890614022565b815160009060208401611c6a64ffffffffff8516828461250c565b95945050505050565b60008181611c89815b62ffffff19841690612550565b50611c9962ffffff19851661262a565b6001600160601b0316611cb557611cae612639565b9250611dc2565b6000611cc2856000612641565b90506000611cd562ffffff19871661262a565b6001600160601b031690506001600160401b038216611cff57611cf6612639565b94505050611dc2565b6000611d0a8361278a565b60ff16905060005b836001600160401b0316811015611d8857828210611d3d57611d32612639565b965050505050611dc2565b6000611d5d611d4c8486614187565b60055b62ffffff198c1691906127e8565b9050611d6881612812565b611d729084614095565b9250508080611d8090614215565b915050611d12565b50818114611da257611d98612639565b9550505050611dc2565b611dbc60065b60d81b6301000000600160d81b0389161790565b95505050505b5050919050565b62ffffff199081161490565b6000606081611deb611de6826113aa565b612866565b9050611dfc62ffffff198216611dc9565b15611e475760405162461bcd60e51b815260206004820152601b60248201527a109a5d18dbda5b92195b1c195c8e881d9bdd5d081a5cc81b9d5b1b602a1b60448201526064016106d8565b6000806000806000611e5a866000612641565b6001600160401b0316905060005b81811015611f4257611e7a8782612967565b9550611e8586612a8c565b9450611e9086612ae0565b9350611e9b84612b2a565b925062ffffff198084161415611f1e5789604051602001611ebc9190613e77565b60405160208183030381529060405280519060200120611ee18662ffffff1916612c4c565b604051602001611ef19190613e77565b604051602081830303815290604052805190602001201415611f1957611f1686612c92565b98505b611f30565b611f2d62ffffff198416612c4c565b97505b80611f3a81614215565b915050611e68565b505050505050509250929050565b600080611f608360006001612cb7565b600201519392505050565b600080611f7a83600280612cb7565b600101519392505050565b600080611f958360176019612cb7565b600301519392505050565b600080611fb08360036016612cb7565b601401519392505050565b600080611f7a83601a80612cb7565b600080611f7a83601b80612cb7565b60606114ff84848460405180606001604052806029815260200161428060299139612d3c565b8047101561204f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016106d8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461209c576040519150601f19603f3d011682016040523d82523d6000602084013e6120a1565b606091505b50509050806121155760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b60648201526084016106d8565b505050565b6005546000828152600960205260408082205490516307f3f86760e21b8152919283928392839283926001600160a01b0390911691631fcfe19c91612166918b91309190600401613ff4565b602060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b89190613bee565b50600354600087815260096020526040902054612710916121d89161413f565b6121e2919061411f565b6000878152600960208181526040808420600281015460a3845282862054865260a1845291852054948c9052929091529054929650945061271091612227919061413f565b612231919061411f565b60a45460008881526009602052604090205491935061271091612254919061413f565b61225e919061411f565b905082156122ea576006546001600160a01b031663a9059cbb33856040518363ffffffff1660e01b8152600401612296929190613edc565b602060405180830381600087803b1580156122b057600080fd5b505af11580156122c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e89190613bba565b505b831561237a5760065460085460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92612326929116908890600401613edc565b602060405180830381600087803b15801561234057600080fd5b505af1158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613bba565b505b811561242457600654600087815260a36020908152604080832054835260a29091529081902054905163a9059cbb60e01b81526001600160a01b039283169263a9059cbb926123d0929116908690600401613edc565b602060405180830381600087803b1580156123ea57600080fd5b505af11580156123fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124229190613bba565b505b80156124c25760055460405163626885b560e11b81526124c2916001600160a01b03169063c4d10b6a9061245c908b90600401613fe1565b60206040518083038186803b15801561247457600080fd5b505afa158015612488573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ac9190613b66565b600088815260a360205260409020548390612e59565b6000868152600960205260409020548190839085906124e2908890614187565b6124ec9190614187565b6124f69190614187565b6125009190614187565b94509295509295909350565b6000806125198385614095565b9050604051811115612529575060005b8061253b5762ffffff19915050610d26565b5050606092831b9190911790911b1760181b90565b600061255c8383612fe1565b61262357600061257b61256f8560d81c90565b64ffffffffff16613004565b91505060006125908464ffffffffff16613004565b6040517f5479706520617373657274696f6e206661696c65642e20476f7420307800000060208201526001600160b01b031960b086811b8216603d8401526c05c408af0e0cac6e8cac84060f609b1b604784015283901b16605482015290925060009150605e015b60405160208183030381529060405290508060405162461bcd60e51b81526004016106d89190613fe1565b5090919050565b60181c6001600160601b031690565b62ffffff1990565b60008061265662ffffff1985168460016130b0565b905060fc811161267157612669816130e0565b915050610823565b8060fd14156126d75761269f61269a61268b856001614095565b62ffffff19871690600261314c565b6130e0565b91506126aa8261278a565b60ff166003146126d2576126d06126cb62ffffff198616856003600061328f565b6132f5565b505b612783565b8060fe141561272c5761270061269a6126f1856001614095565b62ffffff19871690600461314c565b915061270b8261278a565b60ff166005146126d2576126d06126cb62ffffff198616856005600061328f565b8060ff14156127835761275561269a612746856001614095565b62ffffff19871690600861314c565b91506127608261278a565b60ff16600914612783576127816126cb62ffffff198616856009600061328f565b505b5092915050565b600060fc826001600160401b0316116127a557506001919050565b61ffff826001600160401b0316116127bf57506003919050565b63ffffffff826001600160401b0316116127db57506005919050565b506009919050565b919050565b60006114ff84846127f88761262a565b6001600160601b031661280b9190614187565b858561328f565b600081600561282081611c7c565b50600061282e856024612641565b9050806001600160401b03166128438261278a565b60ff166128509190614095565b61285b906024614095565b611c6a906004614095565b6000818161287381611c7c565b5061288362ffffff19851661262a565b6001600160601b031661289857611cae612639565b60006128a5856000612641565b905060006128b862ffffff19871661262a565b6001600160601b031690506001600160401b0382166128d957611cf6612639565b60006128e48361278a565b60ff16905060005b836001600160401b031681101561294d5782821061290c57611d32612639565b600061292261291b8486614187565b600e611d4f565b905061292d8161337d565b6129379084614095565b925050808061294590614215565b9150506128ec565b5081811461295d57611d98612639565b611dbc600f611da8565b600082600f61297581611c7c565b506000612983866000612641565b6001600160401b03169050600061299f62ffffff19881661262a565b6001600160601b031690508186106129ed5760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b60448201526064016106d8565b60006129f88361278a565b60ff1690506000805b88811015612a4e57612a25612a168486614187565b62ffffff198c1690600e6127e8565b9150612a308261337d565b612a3a9084614095565b9250612a47600182614095565b9050612a01565b50612a5c61291b8385614187565b90506000612a698261337d565b9050612a7e62ffffff198b168483600d61328f565b9a9950505050505050505050565b600081600d612a9a81611c7c565b506000612aa8856008612641565b9050611c6a612ab68261278a565b612ac19060086140d8565b60ff166001600160401b03831660075b62ffffff19891692919061328f565b600081600d612aee81611c7c565b506000612afc856008612641565b9050611c6a600882612b0d8461278a565b60ff16612b1a91906140ad565b6001600160401b03166007612ad1565b6000816007612b3881611c7c565b506000612b46856000612641565b90506000612b6061269a62ffffff198816600260016130b0565b9050612b7462ffffff1987166001806130b0565b606a141580612ba85750612b8960028361419e565b6001600160401b0316612ba562ffffff198816600260016130b0565b14155b15612bb557611cf6612639565b604d826001600160401b031611158015612bd957506004826001600160401b031610155b612c255760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e0060448201526064016106d8565b612c4262ffffff19871660036001600160401b038416600c61328f565b9695505050505050565b6060600080612c5a8461262a565b60405193508392506001600160601b03169050612c8184612c7c846020614095565b6133c6565b508181016020016040529052919050565b600081600d612ca081611c7c565b506114ff61269a62ffffff1986166000600861314c565b60606000835b612cc8846001614095565b811015612d3357858181518110612cef57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b91508282604051602001612d0f929190613e93565b60405160208183030381529060405292508080612d2b90614215565b915050612cbd565b50509392505050565b606082471015612d9d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016106d8565b843b612deb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106d8565b600080866001600160a01b03168587604051612e079190613e77565b60006040518083038185875af1925050503d8060008114612e44576040519150601f19603f3d011682016040523d82523d6000602084013e612e49565b606091505b5091509150611ad2828286613509565b81156121155760a5546001600160a01b03161580612e7657508015155b15612f055760065460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612ead9086908690600401613edc565b602060405180830381600087803b158015612ec757600080fd5b505af1158015612edb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eff9190613bba565b50505050565b60065460a55460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f3b929116908690600401613edc565b602060405180830381600087803b158015612f5557600080fd5b505af1158015612f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f8d9190613bba565b5060a554604051612eff916001600160a01b031690612fb29086908690602401613edc565b60408051601f198184030181529190526020810180516001600160e01b0316637db4e28f60e01b179052613542565b60008164ffffffffff16612ff58460d81c90565b64ffffffffff16149392505050565b600080601f5b600f8160ff16111561306257600061302382600861415e565b60ff1685901c905061303481613584565b61ffff16841793508160ff1660101461304f57601084901b93505b5061305b6001826141c6565b905061300a565b50600f5b60ff8160ff1610156130aa5760ff600882021684901c61308581613584565b61ffff16831792508160ff166000146130a057601083901b92505b5060001901613066565b50915091565b60006130bd8260206141c6565b6130c890600861415e565b60ff166130d68585856135b6565b901c949350505050565b60006001600160401b038211156131485760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b60648201526084016106d8565b5090565b60006114ff61315c8585856135b6565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff161790506040816001600160401b03600160801b03600160c01b0316901b604082901c6001600160401b03600160801b03600160c01b0316179050608081901b608082901c179050919050565b60008061329b866136e4565b6001600160601b031690506132af866136f3565b846132ba8784614095565b6132c49190614095565b11156132d75762ffffff199150506114ff565b6132e18582614095565b9050612c428364ffffffffff16828661250c565b6060600061333361332e8261332061331262ffffff19881661262a565b6001600160601b0316613720565b62ffffff19871691906130b0565b613004565b6040517a09cdedc5adad2dcd2dac2d840ecc2e440d2dce85c408edee84060f602b1b60208201526001600160701b0319607083901b16603b82015290925060009150604d016125f8565b600081600e61338b81611c7c565b506000613399856008612641565b9050806001600160401b03166133ae8261278a565b60ff166133bb9190614095565b611c6a906008614095565b60006133d183613781565b61342e5760405162461bcd60e51b815260206004820152602860248201527f54797065644d656d566965772f636f7079546f202d204e756c6c20706f696e7460448201526732b9103232b932b360c11b60648201526084016106d8565b61343783613793565b6134975760405162461bcd60e51b815260206004820152602b60248201527f54797065644d656d566965772f636f7079546f202d20496e76616c696420706f60448201526a34b73a32b9103232b932b360a91b60648201526084016106d8565b60006134a28461262a565b6001600160601b0316905060006134b8856136e4565b6001600160601b0316905060006040519050848111156134d85760206060fd5b8285848460045afa50612c426134ee8760d81c90565b64ffffffffff60601b606091821b168717901b841760181b90565b60608315613518575081610d26565b8251156135285782518084602001fd5b8160405162461bcd60e51b81526004016106d89190613fe1565b6060610d2683836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506137d1565b600061359660048360ff16901c6137e0565b60ff1661ffff919091161760081b6135ad826137e0565b60ff1617919050565b600060ff82166135c857506000610d26565b6135d18461262a565b6001600160601b03166135e760ff841685614095565b11156136375761361e6135f9856136e4565b6001600160601b031661360b8661262a565b6001600160601b0316858560ff1661393c565b60405162461bcd60e51b81526004016106d89190613fe1565b60208260ff1611156136ae5760405162461bcd60e51b815260206004820152603a60248201527f54797065644d656d566965772f696e646578202d20417474656d7074656420746044820152796f20696e646578206d6f7265207468616e20333220627974657360301b60648201526084016106d8565b6008820260006136bd866136e4565b6001600160601b031690506000600160ff1b60001984011d91909501511695945050505050565b60781c6001600160601b031690565b60006136fe8261262a565b613707836136e4565b61371191906140fd565b6001600160601b031692915050565b600060ff8211156131485760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2038604482015264206269747360d81b60648201526084016106d8565b600061378c82611dc9565b1592915050565b600061379f8260d81c90565b64ffffffffff1664ffffffffff14156137ba57506000919050565b60006137c5836136f3565b60405110199392505050565b60606114ff8484600085612d3c565b600060f08083179060ff821614156137fb5750603092915050565b8060ff1660f114156138105750603192915050565b8060ff1660f214156138255750603292915050565b8060ff1660f3141561383a5750603392915050565b8060ff1660f4141561384f5750603492915050565b8060ff1660f514156138645750603592915050565b8060ff1660f614156138795750603692915050565b8060ff1660f7141561388e5750603792915050565b8060ff1660f814156138a35750603892915050565b8060ff1660f914156138b85750603992915050565b8060ff1660fa14156138cd5750606192915050565b8060ff1660fb14156138e25750606292915050565b8060ff1660fc14156138f75750606392915050565b8060ff1660fd141561390c5750606492915050565b8060ff1660fe14156139215750606592915050565b8060ff1660ff14156139365750606692915050565b50919050565b6060600061394986613004565b915050600061395786613004565b915050600061396586613004565b915050600061397386613004565b604080517f54797065644d656d566965772f696e646578202d204f76657272616e20746865602082015274040ecd2caee5c40a6d8d2c6ca40d2e640c2e84060f605b1b818301526001600160d01b031960d098891b811660558301526e040eed2e8d040d8cadccee8d04060f608b1b605b830181905297891b8116606a8301527f2e20417474656d7074656420746f20696e646578206174206f666673657420306070830152600f60fb1b609083015295881b861660918201526097810196909652951b90921660a68401525050601760f91b60ac8201528151808203608d01815260ad90910190915295945050505050565b80356001600160e01b0319811681146127e357600080fd5b60008083601f840112613a8f578182fd5b5081356001600160401b03811115613aa5578182fd5b602083019150836020828501011115613abd57600080fd5b9250929050565b600082601f830112613ad4578081fd5b81356001600160401b0380821115613aee57613aee614246565b604051601f8301601f19908116603f01168101908282118183101715613b1657613b16614246565b81604052838152866020858801011115613b2e578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215613b5b578081fd5b8135610d268161425c565b600060208284031215613b77578081fd5b8151610d268161425c565b60008060408385031215613b94578081fd5b8235613b9f8161425c565b91506020830135613baf81614271565b809150509250929050565b600060208284031215613bcb578081fd5b8151610d2681614271565b600060208284031215613be7578081fd5b5035919050565b600060208284031215613bff578081fd5b5051919050565b600080600060408486031215613c1a578081fd5b83356001600160401b0380821115613c30578283fd5b9085019060e08288031215613c43578283fd5b613c4b61406d565b613c5483613a66565b8152602083013582811115613c67578485fd5b613c7389828601613ac4565b602083015250604083013582811115613c8a578485fd5b613c9689828601613ac4565b604083015250613ca860608401613a66565b60608201526080830135608082015260a083013582811115613cc8578485fd5b613cd489828601613ac4565b60a08301525060c083013560c0820152809550506020860135915080821115613cfb578283fd5b50613d0886828701613a7e565b9497909650939450505050565b60008060408385031215613d27578182fd5b823591506020830135613baf8161425c565b60008060408385031215613d4b578182fd5b50508035926020909101359150565b60008060008060008060008060006101208a8c031215613d78578485fd5b8935985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135613da68161425c565b935060c08a0135613db68161425c565b925060e08a0135613dc68161425c565b91506101008a0135613dd78161425c565b809150509295985092959850929598565b60008151808452613e008160208601602086016141e9565b601f01601f19169290920160200192915050565b600063ffffffff60e01b80871683528551613e36816004860160208a016141e9565b855190840190613e4d816004840160208a016141e9565b919094169301600481019390935250506008019392505050565b8183823760009101908152919050565b60008251613e898184602087016141e9565b9190910192915050565b60008351613ea58184602088016141e9565b6001600160f81b0319939093169190920190815260010192915050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b8781526001600160a01b038781166020808401919091529087166040830152610160820190606083018760005b6002811015613f3f57815183529183019190830190600101613f22565b50505060a083018660005b6004811015613f6757815183529183019190830190600101613f4a565b50505050610120820193909352610140015295945050505050565b848152836020820152608060408201526000613fa16080830185613de8565b905082606083015295945050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b602081526000610d266020830184613de8565b6060815260006140076060830186613de8565b6001600160a01b039490941660208301525060400152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60405160e081016001600160401b038111828210171561408f5761408f614246565b60405290565b600082198211156140a8576140a8614230565b500190565b60006001600160401b038281168482168083038211156140cf576140cf614230565b01949350505050565b600060ff821660ff84168060ff038211156140f5576140f5614230565b019392505050565b60006001600160601b038281168482168083038211156140cf576140cf614230565b60008261413a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561415957614159614230565b500290565b600060ff821660ff84168160ff048111821515161561417f5761417f614230565b029392505050565b60008282101561419957614199614230565b500390565b60006001600160401b03838116908316818110156141be576141be614230565b039392505050565b600060ff821660ff8416808210156141e0576141e0614230565b90039392505050565b60005b838110156142045781810151838201526020016141ec565b83811115612eff5750506000910152565b600060001982141561422957614229614230565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146107c057600080fd5b80151581146107c057600080fdfe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a2646970667358221220a55c684f2d76cfedfaf19c324807f70c5052a25eb62c5822849db95794956b4564736f6c63430008040033