0 txs
0 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)
instantRouter
viewfunction instantRouter() view returns (address)
isRequestUsed
viewfunction isRequestUsed(bytes32 _txId) 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)
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()
setInstantRouter
nonpayablefunction setInstantRouter(address _instantRouter)
setLockerPercentageFee
nonpayablefunction setLockerPercentageFee(uint256 _lockerPercentageFee)
setLockers
nonpayablefunction setLockers(address _lockers)
setProtocolPercentageFee
nonpayablefunction setProtocolPercentageFee(uint256 _protocolPercentageFee)
setRelay
nonpayablefunction setRelay(address _relay)
setStartingBlockNumber
nonpayablefunction setStartingBlockNumber(uint256 _startingBlockNumber)
setTeleBTC
nonpayablefunction setTeleBTC(address _teleBTC)
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)
NewInstantRouter
event NewInstantRouter(address oldInstantRouter, address newInstantRouter)
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
0x608060405234801561001057600080fd5b5061428b806100206000396000f3fe60806040526004361061016c5760003560e01c8063136dfb63146101785780631812adb61461019a5780631876dec4146101c35780631e7107c7146101fb57806359fd0b0c1461021b57806361d027b31461024857806363908020146102685780636600203d1461027e57806370872aa51461029e578063715018a6146102b4578063765f0233146102c95780637ed55748146103525780637f0f18171461037257806380afdea81461039257806380bc4726146103a8578063870ba6cf146103d85780638d3d78cd146103f85780638d5fc1d4146104185780638da5cb5b146104385780638f9eb78b1461044d5780639a8a05921461046d578063a9b6827114610483578063acc2166a146104b9578063b14d3532146104d9578063b59589d1146104f9578063b866d6ea14610519578063c805f68b1461052c578063e35a0a881461054c578063e9770e931461056c578063f0f4426014610599578063f2fde38b146105b957600080fd5b3661017357005b600080fd5b34801561018457600080fd5b50610198610193366004613d15565b6105d9565b005b3480156101a657600080fd5b506101b060035481565b6040519081526020015b60405180910390f35b3480156101cf57600080fd5b506005546101e3906001600160a01b031681565b6040516001600160a01b0390911681526020016101ba565b34801561020757600080fd5b50610198610216366004613b86565b610749565b34801561022757600080fd5b506101b0610236366004613b86565b60a16020526000908152604090205481565b34801561025457600080fd5b506008546101e3906001600160a01b031681565b34801561027457600080fd5b506101b060a45481565b34801561028a57600080fd5b50610198610299366004613b86565b61075d565b3480156102aa57600080fd5b506101b060005481565b3480156102c057600080fd5b5061019861076e565b3480156102d557600080fd5b506103206102e4366004613b86565b6009602052600090815260409020805460018201546002830154600384015460049094015492936001600160a01b039092169290919060ff1685565b604080519586526001600160a01b0390941660208601529284019190915260608301521515608082015260a0016101ba565b34801561035e57600080fd5b5061019861036d366004613b86565b610778565b34801561037e57600080fd5b5061019861038d366004613b2e565b610789565b34801561039e57600080fd5b506101b060025481565b3480156103b457600080fd5b506103c86103c3366004613b86565b61079a565b60405190151581526020016101ba565b3480156103e457600080fd5b506101986103f3366004613b2e565b6107c3565b34801561040457600080fd5b506006546101e3906001600160a01b031681565b34801561042457600080fd5b50610198610433366004613cc5565b6107d4565b34801561044457600080fd5b506101e36107ea565b34801561045957600080fd5b50610198610468366004613cf4565b6107f9565b34801561047957600080fd5b506101b060015481565b34801561048f57600080fd5b506101e361049e366004613b86565b60a2602052600090815260409020546001600160a01b031681565b3480156104c557600080fd5b5060a5546101e3906001600160a01b031681565b3480156104e557600080fd5b506101986104f4366004613b2e565b61080b565b34801561050557600080fd5b506004546101e3906001600160a01b031681565b6103c8610527366004613bb6565b61081c565b34801561053857600080fd5b50610198610547366004613b2e565b610c7f565b34801561055857600080fd5b506007546101e3906001600160a01b031681565b34801561057857600080fd5b506101b0610587366004613b86565b60a36020526000908152604090205481565b3480156105a557600080fd5b506101986105b4366004613b2e565b610c90565b3480156105c557600080fd5b506101986105d4366004613b2e565b610ca1565b600a54610100900460ff16158080156105f95750600a54600160ff909116105b806106135750303b1580156106135750600a5460ff166001145b61067b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600a805460ff19166001179055801561069e57600a805461ff0019166101001790555b6106a6610d17565b6106ae610d46565b600187905560028690556106c18a610d75565b6106ca89610ddd565b6106d388610e87565b6106dc85610ef3565b6106e584610f85565b6106ee83611017565b6106f7826110a9565b801561073d57600a805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b61075161113b565b61075a81610d75565b50565b61076561113b565b61075a81610e87565b61077661113b565b565b61078061113b565b61075a81610ddd565b61079161113b565b61075a81611017565b60008181526009602052604081206004015460ff166107ba5760006107bd565b60015b92915050565b6107cb61113b565b61075a8161119a565b6107dc61113b565b6107e6828261122c565b5050565b603d546001600160a01b031690565b61080161113b565b6107e682826112c8565b61081361113b565b61075a81610f85565b6000610826611329565b6007546001600160a01b0316336001600160a01b0316146108895760405162461bcd60e51b815260206004820181905260248201527f43435472616e73666572526f757465723a20696e76616c69642073656e6465726044820152606401610672565b600054846080015110156108eb5760405162461bcd60e51b8152602060048201526024808201527f43435472616e73666572526f757465723a207265717565737420697320746f6f604482015263081bdb1960e21b6064820152608401610672565b60006109098560000151866020015187604001518860600151611383565b60008181526009602052604090206004015490915060ff16156109855760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a20726571756573742068617320626560448201526d656e2075736564206265666f726560901b6064820152608401610672565b60608501516001600160e01b031916156109f25760405162461bcd60e51b815260206004820152602860248201527f43435472616e73666572526f757465723a206c6f636b2074696d65206973206e6044820152676f6e202d7a65726f60c01b6064820152608401610672565b610a3684848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050506040870151836114eb565b610a4e8186608001518760a001518860c00151611943565b610abb5760405162461bcd60e51b815260206004820152603860248201527f43435472616e73666572526f757465723a207472616e73616374696f6e2068616044820152771cc81b9bdd081899595b88199a5b985b1a5e9959081e595d60421b6064820152608401610672565b6000806000806000610b0489898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508a9250611ac1915050565b60008b81526009602052604090819020600101549051959a50939850919650945092506001600160a01b031690610b3e908b908b90613e22565b60405180910390207fdebe45dc811f213ee5572218ab9c9e7d78fac393b0ca5c50ea9edbe5c8bcb61788600560009054906101000a90046001600160a01b03166001600160a01b031663c4d10b6a8e8e6040518363ffffffff1660e01b8152600401610bab929190613f6d565b60206040518083038186803b158015610bc357600080fd5b505afa158015610bd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfb9190613b4a565b60408051808201825260008d8152600960209081528382205483528083018e905283516080810185528c81528082018b90528085018e9052606081018c90528f835260a390915290839020546001549351610c5c9695943394939291613eb0565b60405180910390a360019650505050505050610c786001606f55565b9392505050565b610c8761113b565b61075a81610ef3565b610c9861113b565b61075a816110a9565b610ca961113b565b6001600160a01b038116610d0e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610672565b61075a81611b8a565b600a54610100900460ff16610d3e5760405162461bcd60e51b815260040161067290613fdd565b610776611bdc565b600a54610100900460ff16610d6d5760405162461bcd60e51b815260040161067290613fdd565b610776611c0c565b6000548111610dd85760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a206c6f77207374617274696e67426c60448201526837b1b5a73ab6b132b960b91b6064820152608401610672565b600055565b806127101015610e465760405162461bcd60e51b815260206004820152602e60248201527f43435472616e73666572526f757465723a2070726f746f636f6c20666565206960448201526d73206f7574206f662072616e676560901b6064820152608401610672565b60035460408051918252602082018390527f7d205f60891f60851c61cd244ba387d72b6589e7c0ac41b9d909ab0ce2c2a53b910160405180910390a1600355565b806127101015610eee5760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a206c6f636b6572206665652069732060448201526b6f7574206f662072616e676560a01b6064820152608401610672565b60a455565b806001600160a01b038116610f1b5760405163d92e233d60e01b815260040160405180910390fd5b6004546040517f4c28a3f61a715259c4dc930c23e7423b8fa52e13232c061a6e488729c66184f491610f5a916001600160a01b03909116908590613e7d565b60405180910390a150600480546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b038116610fad5760405163d92e233d60e01b815260040160405180910390fd5b6005546040517ffa021c2ec0f46429a53e7f88b88065e40001f50c9d38b2e8b713beaf9828d4c391610fec916001600160a01b03909116908590613e7d565b60405180910390a150600580546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b03811661103f5760405163d92e233d60e01b815260040160405180910390fd5b6006546040517f36a4c08a38b736dcecb6c328dba61238529620e83ccb23db2cc43cd34ec260969161107e916001600160a01b03909116908590613e7d565b60405180910390a150600680546001600160a01b0319166001600160a01b0392909216919091179055565b806001600160a01b0381166110d15760405163d92e233d60e01b815260040160405180910390fd5b6008546040517f567657fa3f286518b318f4a29870674f433f622fdfc819691acb13105b22822591611110916001600160a01b03909116908590613e7d565b60405180910390a150600880546001600160a01b0319166001600160a01b0392909216919091179055565b336111446107ea565b6001600160a01b0316146107765760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610672565b806001600160a01b0381166111c25760405163d92e233d60e01b815260040160405180910390fd5b6007546040517f12ad124e13af4c31364ad22aa74320e167b37f005dafb75d71a210c49da3629e91611201916001600160a01b03909116908590613e7d565b60405180910390a150600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082815260a26020526040908190205490517f1e73962bcff5b98a9ac70c9b0f71fbb31dc0f5a09348c6d3ceab164169a9e729916112929185916001600160a01b03169085909283526001600160a01b03918216602084015216604082015260600190565b60405180910390a1600091825260a2602052604090912080546001600160a01b0319166001600160a01b03909216919091179055565b600082815260a16020908152604091829020548251858152918201529081018290527f188adabf806a6b6d814acc1dbd9f09e5a251c8c065d6285749a5824e4579b6459060600160405180910390a1600091825260a1602052604090912055565b6002606f54141561137c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610672565b6002606f55565b60008061139a611395825b8790611c33565b611c57565b90506113ab62ffffff198216611dad565b156113f55760405162461bcd60e51b815260206004820152601a602482015279109a5d18dbda5b92195b1c195c8e881d9a5b881a5cc81b9d5b1b60321b6044820152606401610672565b60006002878787876040516020016114109493929190613dcf565b60408051601f198184030181529082905261142a91613e32565b602060405180830381855afa158015611447573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061146a9190613b9e565b9050600060028260405160200161148391815260200190565b60408051601f198184030181529082905261149d91613e32565b602060405180830381855afa1580156114ba573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906114dd9190613b9e565b93505050505b949350505050565b60055460405163aff2faa360e01b81526001600160a01b039091169063aff2faa39061151b908690600401613f9c565b60206040518083038186803b15801561153357600080fd5b505afa158015611547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156b9190613b66565b6115df576040805162461bcd60e51b81526020600482015260248101919091527f43435472616e73666572526f757465723a206e6f206c6f636b6572207769746860448201527f2074686520676976656e206c6f636b696e6720736372697074206578697374736064820152608401610672565b61161c6040518060a001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000151581525090565b60606116288486611db9565b6001600160401b0390911683528051909150601c146116895760405162461bcd60e51b815260206004820152601d60248201527f43435472616e73666572526f757465723a20696e76616c6964206c656e0000006044820152606401610672565b81516116e65760405162461bcd60e51b815260206004820152602660248201527f43435472616e73666572526f757465723a20696e70757420616d6f756e74206960448201526573207a65726f60d01b6064820152608401610672565b6001546116f282611f34565b61ffff16146117555760405162461bcd60e51b815260206004820152602960248201527f43435472616e73666572526f757465723a20636861696e206964206973206e6f6044820152681d0818dbdc9c9958dd60ba1b6064820152608401610672565b60025461176182611f4f565b60ff16146117c15760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a20617070206964206973206e6f742060448201526618dbdc9c9958dd60ca1b6064820152608401610672565b60006117cc82611f69565b62ffffff16905082600001518111156118255760405162461bcd60e51b815260206004820152601b60248201527a43435472616e73666572526f757465723a2077726f6e672066656560281b6044820152606401610672565b6040830181905261183582611f84565b6001600160a01b0316602084015261184c82611f9f565b60ff1660608401819052156118b35760405162461bcd60e51b815260206004820152602760248201527f43435472616e73666572526f757465723a207370656564206973206f7574206f604482015266662072616e676560c81b6064820152608401610672565b6118bc82611fae565b600085815260a36020908152604080832060ff949094169093556001608087018181529783526009825291839020865181559086015191810180546001600160a01b0319166001600160a01b03909316929092179091559084015160028201556060909301516003840155505090516004909101805460ff19169115159190911790555050565b6004805460405163d0a8973960e01b81529182018590526000602483018190529182916001600160a01b03169063d0a897399060440160206040518083038186803b15801561199157600080fd5b505afa1580156119a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c99190613b9e565b905080341015611a305760405162461bcd60e51b815260206004820152602c60248201527f43435472616e73666572526f757465723a207061696420666565206973206e6f60448201526b1d081cdd59999a58da595b9d60a21b6064820152608401610672565b600454604051600091611a8d916001600160a01b0390911690611a5d908a908a908a908a90602401613f3d565b60408051601f198184030181529190526020810180516001600160e01b0316634354da2560e01b17905284611fbd565b9050611aa233611a9d8434614142565b611fe3565b80806020019051810190611ab69190613b66565b979650505050505050565b6000806000806000611ad387876120fe565b60065460008c8152600960205260409081902060010154905163a9059cbb60e01b8152969b5094995092975090955093506001600160a01b039081169263a9059cbb92611b269216908990600401613e97565b602060405180830381600087803b158015611b4057600080fd5b505af1158015611b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b789190613b66565b509295509295909350565b6001606f55565b603d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a54610100900460ff16611c035760405162461bcd60e51b815260040161067290613fdd565b61077633611b8a565b600a54610100900460ff16611b835760405162461bcd60e51b815260040161067290613fdd565b815160009060208401611c4e64ffffffffff851682846124f0565b95945050505050565b60008181611c6d815b62ffffff19841690612534565b50611c7d62ffffff19851661260e565b6001600160601b0316611c9957611c9261261d565b9250611da6565b6000611ca6856000612625565b90506000611cb962ffffff19871661260e565b6001600160601b031690506001600160401b038216611ce357611cda61261d565b94505050611da6565b6000611cee8361276e565b60ff16905060005b836001600160401b0316811015611d6c57828210611d2157611d1661261d565b965050505050611da6565b6000611d41611d308486614142565b60055b62ffffff198c1691906127cc565b9050611d4c816127f6565b611d569084614050565b9250508080611d64906141d0565b915050611cf6565b50818114611d8657611d7c61261d565b9550505050611da6565b611da060065b60d81b6301000000600160d81b0389161790565b95505050505b5050919050565b62ffffff199081161490565b6000606081611dcf611dca8261138e565b61284a565b9050611de062ffffff198216611dad565b15611e2b5760405162461bcd60e51b815260206004820152601b60248201527a109a5d18dbda5b92195b1c195c8e881d9bdd5d081a5cc81b9d5b1b602a1b6044820152606401610672565b6000806000806000611e3e866000612625565b6001600160401b0316905060005b81811015611f2657611e5e878261294b565b9550611e6986612a70565b9450611e7486612ac4565b9350611e7f84612b0e565b925062ffffff198084161415611f025789604051602001611ea09190613e32565b60405160208183030381529060405280519060200120611ec58662ffffff1916612c30565b604051602001611ed59190613e32565b604051602081830303815290604052805190602001201415611efd57611efa86612c76565b98505b611f14565b611f1162ffffff198416612c30565b97505b80611f1e816141d0565b915050611e4c565b505050505050509250929050565b600080611f448360006001612c9b565b600201519392505050565b600080611f5e83600280612c9b565b600101519392505050565b600080611f798360176019612c9b565b600301519392505050565b600080611f948360036016612c9b565b601401519392505050565b600080611f5e83601a80612c9b565b600080611f5e83601b80612c9b565b60606114e384848460405180606001604052806029815260200161422d60299139612d20565b804710156120335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610672565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612080576040519150601f19603f3d011682016040523d82523d6000602084013e612085565b606091505b50509050806120f95760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c20726044820152791958da5c1a595b9d081b585e481a185d99481c995d995c9d195960321b6064820152608401610672565b505050565b6005546000828152600960205260408082205490516307f3f86760e21b8152919283928392839283926001600160a01b0390911691631fcfe19c9161214a918b91309190600401613faf565b602060405180830381600087803b15801561216457600080fd5b505af1158015612178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219c9190613b9e565b50600354600087815260096020526040902054612710916121bc916140fa565b6121c691906140da565b6000878152600960208181526040808420600281015460a3845282862054865260a1845291852054948c905292909152905492965094506127109161220b91906140fa565b61221591906140da565b60a4546000888152600960205260409020549193506127109161223891906140fa565b61224291906140da565b905082156122ce576006546001600160a01b031663a9059cbb33856040518363ffffffff1660e01b815260040161227a929190613e97565b602060405180830381600087803b15801561229457600080fd5b505af11580156122a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cc9190613b66565b505b831561235e5760065460085460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb9261230a929116908890600401613e97565b602060405180830381600087803b15801561232457600080fd5b505af1158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c9190613b66565b505b811561240857600654600087815260a36020908152604080832054835260a29091529081902054905163a9059cbb60e01b81526001600160a01b039283169263a9059cbb926123b4929116908690600401613e97565b602060405180830381600087803b1580156123ce57600080fd5b505af11580156123e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124069190613b66565b505b80156124a65760055460405163626885b560e11b81526124a6916001600160a01b03169063c4d10b6a90612440908b90600401613f9c565b60206040518083038186803b15801561245857600080fd5b505afa15801561246c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124909190613b4a565b600088815260a360205260409020548390612e3d565b6000868152600960205260409020548190839085906124c6908890614142565b6124d09190614142565b6124da9190614142565b6124e49190614142565b94509295509295909350565b6000806124fd8385614050565b905060405181111561250d575060005b8061251f5762ffffff19915050610c78565b5050606092831b9190911790911b1760181b90565b60006125408383612fc5565b61260757600061255f6125538560d81c90565b64ffffffffff16612fe8565b91505060006125748464ffffffffff16612fe8565b6040517f5479706520617373657274696f6e206661696c65642e20476f7420307800000060208201526001600160b01b031960b086811b8216603d8401526c05c408af0e0cac6e8cac84060f609b1b604784015283901b16605482015290925060009150605e015b60405160208183030381529060405290508060405162461bcd60e51b81526004016106729190613f9c565b5090919050565b60181c6001600160601b031690565b62ffffff1990565b60008061263a62ffffff198516846001613094565b905060fc81116126555761264d816130c4565b9150506107bd565b8060fd14156126bb5761268361267e61266f856001614050565b62ffffff198716906002613130565b6130c4565b915061268e8261276e565b60ff166003146126b6576126b46126af62ffffff1986168560036000613273565b6132d9565b505b612767565b8060fe1415612710576126e461267e6126d5856001614050565b62ffffff198716906004613130565b91506126ef8261276e565b60ff166005146126b6576126b46126af62ffffff1986168560056000613273565b8060ff14156127675761273961267e61272a856001614050565b62ffffff198716906008613130565b91506127448261276e565b60ff16600914612767576127656126af62ffffff1986168560096000613273565b505b5092915050565b600060fc826001600160401b03161161278957506001919050565b61ffff826001600160401b0316116127a357506003919050565b63ffffffff826001600160401b0316116127bf57506005919050565b506009919050565b919050565b60006114e384846127dc8761260e565b6001600160601b03166127ef9190614142565b8585613273565b600081600561280481611c60565b506000612812856024612625565b9050806001600160401b03166128278261276e565b60ff166128349190614050565b61283f906024614050565b611c4e906004614050565b6000818161285781611c60565b5061286762ffffff19851661260e565b6001600160601b031661287c57611c9261261d565b6000612889856000612625565b9050600061289c62ffffff19871661260e565b6001600160601b031690506001600160401b0382166128bd57611cda61261d565b60006128c88361276e565b60ff16905060005b836001600160401b0316811015612931578282106128f057611d1661261d565b60006129066128ff8486614142565b600e611d33565b905061291181613361565b61291b9084614050565b9250508080612929906141d0565b9150506128d0565b5081811461294157611d7c61261d565b611da0600f611d8c565b600082600f61295981611c60565b506000612967866000612625565b6001600160401b03169050600061298362ffffff19881661260e565b6001600160601b031690508186106129d15760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b6044820152606401610672565b60006129dc8361276e565b60ff1690506000805b88811015612a3257612a096129fa8486614142565b62ffffff198c1690600e6127cc565b9150612a1482613361565b612a1e9084614050565b9250612a2b600182614050565b90506129e5565b50612a406128ff8385614142565b90506000612a4d82613361565b9050612a6262ffffff198b168483600d613273565b9a9950505050505050505050565b600081600d612a7e81611c60565b506000612a8c856008612625565b9050611c4e612a9a8261276e565b612aa5906008614093565b60ff166001600160401b03831660075b62ffffff198916929190613273565b600081600d612ad281611c60565b506000612ae0856008612625565b9050611c4e600882612af18461276e565b60ff16612afe9190614068565b6001600160401b03166007612ab5565b6000816007612b1c81611c60565b506000612b2a856000612625565b90506000612b4461267e62ffffff19881660026001613094565b9050612b5862ffffff198716600180613094565b606a141580612b8c5750612b6d600283614159565b6001600160401b0316612b8962ffffff19881660026001613094565b14155b15612b9957611cda61261d565b604d826001600160401b031611158015612bbd57506004826001600160401b031610155b612c095760405162461bcd60e51b815260206004820152601f60248201527f426974636f696e48656c7065723a20696e76616c6964206f7072657475726e006044820152606401610672565b612c2662ffffff19871660036001600160401b038416600c613273565b9695505050505050565b6060600080612c3e8461260e565b60405193508392506001600160601b03169050612c6584612c60846020614050565b6133aa565b508181016020016040529052919050565b600081600d612c8481611c60565b506114e361267e62ffffff19861660006008613130565b60606000835b612cac846001614050565b811015612d1757858181518110612cd357634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b91508282604051602001612cf3929190613e4e565b60405160208183030381529060405292508080612d0f906141d0565b915050612ca1565b50509392505050565b606082471015612d815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610672565b843b612dcf5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610672565b600080866001600160a01b03168587604051612deb9190613e32565b60006040518083038185875af1925050503d8060008114612e28576040519150601f19603f3d011682016040523d82523d6000602084013e612e2d565b606091505b5091509150611ab68282866134ed565b81156120f95760a5546001600160a01b03161580612e5a57508015155b15612ee95760065460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612e919086908690600401613e97565b602060405180830381600087803b158015612eab57600080fd5b505af1158015612ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee39190613b66565b50505050565b60065460a55460405163095ea7b360e01b81526001600160a01b039283169263095ea7b392612f1f929116908690600401613e97565b602060405180830381600087803b158015612f3957600080fd5b505af1158015612f4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f719190613b66565b5060a554604051612ee3916001600160a01b031690612f969086908690602401613e97565b60408051601f198184030181529190526020810180516001600160e01b0316637db4e28f60e01b179052613526565b60008164ffffffffff16612fd98460d81c90565b64ffffffffff16149392505050565b600080601f5b600f8160ff161115613046576000613007826008614119565b60ff1685901c905061301881613568565b61ffff16841793508160ff1660101461303357601084901b93505b5061303f600182614181565b9050612fee565b50600f5b60ff8160ff16101561308e5760ff600882021684901c61306981613568565b61ffff16831792508160ff1660001461308457601083901b92505b506000190161304a565b50915091565b60006130a1826020614181565b6130ac906008614119565b60ff166130ba85858561359a565b901c949350505050565b60006001600160401b0382111561312c5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203660448201526534206269747360d01b6064820152608401610672565b5090565b60006114e361314085858561359a565b60008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b600882901c7eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff161790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b601082901c7dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff161790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b602082901c7bffffffff00000000ffffffff00000000ffffffff00000000ffffffff161790506040816001600160401b03600160801b03600160c01b0316901b604082901c6001600160401b03600160801b03600160c01b0316179050608081901b608082901c179050919050565b60008061327f866136c8565b6001600160601b03169050613293866136d7565b8461329e8784614050565b6132a89190614050565b11156132bb5762ffffff199150506114e3565b6132c58582614050565b9050612c268364ffffffffff1682866124f0565b60606000613317613312826133046132f662ffffff19881661260e565b6001600160601b0316613704565b62ffffff1987169190613094565b612fe8565b6040517a09cdedc5adad2dcd2dac2d840ecc2e440d2dce85c408edee84060f602b1b60208201526001600160701b0319607083901b16603b82015290925060009150604d016125dc565b600081600e61336f81611c60565b50600061337d856008612625565b9050806001600160401b03166133928261276e565b60ff1661339f9190614050565b611c4e906008614050565b60006133b583613765565b6134125760405162461bcd60e51b815260206004820152602860248201527f54797065644d656d566965772f636f7079546f202d204e756c6c20706f696e7460448201526732b9103232b932b360c11b6064820152608401610672565b61341b83613777565b61347b5760405162461bcd60e51b815260206004820152602b60248201527f54797065644d656d566965772f636f7079546f202d20496e76616c696420706f60448201526a34b73a32b9103232b932b360a91b6064820152608401610672565b60006134868461260e565b6001600160601b03169050600061349c856136c8565b6001600160601b0316905060006040519050848111156134bc5760206060fd5b8285848460045afa50612c266134d28760d81c90565b64ffffffffff60601b606091821b168717901b841760181b90565b606083156134fc575081610c78565b82511561350c5782518084602001fd5b8160405162461bcd60e51b81526004016106729190613f9c565b6060610c7883836040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506137b5565b600061357a60048360ff16901c6137c4565b60ff1661ffff919091161760081b613591826137c4565b60ff1617919050565b600060ff82166135ac57506000610c78565b6135b58461260e565b6001600160601b03166135cb60ff841685614050565b111561361b576136026135dd856136c8565b6001600160601b03166135ef8661260e565b6001600160601b0316858560ff16613920565b60405162461bcd60e51b81526004016106729190613f9c565b60208260ff1611156136925760405162461bcd60e51b815260206004820152603a60248201527f54797065644d656d566965772f696e646578202d20417474656d7074656420746044820152796f20696e646578206d6f7265207468616e20333220627974657360301b6064820152608401610672565b6008820260006136a1866136c8565b6001600160601b031690506000600160ff1b60001984011d91909501511695945050505050565b60781c6001600160601b031690565b60006136e28261260e565b6136eb836136c8565b6136f591906140b8565b6001600160601b031692915050565b600060ff82111561312c5760405162461bcd60e51b815260206004820152602560248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2038604482015264206269747360d81b6064820152608401610672565b600061377082611dad565b1592915050565b60006137838260d81c90565b64ffffffffff1664ffffffffff141561379e57506000919050565b60006137a9836136d7565b60405110199392505050565b60606114e38484600085612d20565b600060f08083179060ff821614156137df5750603092915050565b8060ff1660f114156137f45750603192915050565b8060ff1660f214156138095750603292915050565b8060ff1660f3141561381e5750603392915050565b8060ff1660f414156138335750603492915050565b8060ff1660f514156138485750603592915050565b8060ff1660f6141561385d5750603692915050565b8060ff1660f714156138725750603792915050565b8060ff1660f814156138875750603892915050565b8060ff1660f9141561389c5750603992915050565b8060ff1660fa14156138b15750606192915050565b8060ff1660fb14156138c65750606292915050565b8060ff1660fc14156138db5750606392915050565b8060ff1660fd14156138f05750606492915050565b8060ff1660fe14156139055750606592915050565b8060ff1660ff141561391a5750606692915050565b50919050565b6060600061392d86612fe8565b915050600061393b86612fe8565b915050600061394986612fe8565b915050600061395786612fe8565b604080517f54797065644d656d566965772f696e646578202d204f76657272616e20746865602082015274040ecd2caee5c40a6d8d2c6ca40d2e640c2e84060f605b1b818301526001600160d01b031960d098891b811660558301526e040eed2e8d040d8cadccee8d04060f608b1b605b830181905297891b8116606a8301527f2e20417474656d7074656420746f20696e646578206174206f666673657420306070830152600f60fb1b609083015295881b861660918201526097810196909652951b90921660a68401525050601760f91b60ac8201528151808203608d01815260ad90910190915295945050505050565b80356001600160e01b0319811681146127c757600080fd5b60008083601f840112613a73578182fd5b5081356001600160401b03811115613a89578182fd5b602083019150836020828501011115613aa157600080fd5b9250929050565b600082601f830112613ab8578081fd5b81356001600160401b0380821115613ad257613ad2614201565b604051601f8301601f19908116603f01168101908282118183101715613afa57613afa614201565b81604052838152866020858801011115613b12578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215613b3f578081fd5b8135610c7881614217565b600060208284031215613b5b578081fd5b8151610c7881614217565b600060208284031215613b77578081fd5b81518015158114610c78578182fd5b600060208284031215613b97578081fd5b5035919050565b600060208284031215613baf578081fd5b5051919050565b600080600060408486031215613bca578182fd5b83356001600160401b0380821115613be0578384fd5b9085019060e08288031215613bf3578384fd5b613bfb614028565b613c0483613a4a565b8152602083013582811115613c17578586fd5b613c2389828601613aa8565b602083015250604083013582811115613c3a578586fd5b613c4689828601613aa8565b604083015250613c5860608401613a4a565b60608201526080830135608082015260a083013582811115613c78578586fd5b613c8489828601613aa8565b60a08301525060c083013560c0820152809550506020860135915080821115613cab578384fd5b50613cb886828701613a62565b9497909650939450505050565b60008060408385031215613cd7578182fd5b823591506020830135613ce981614217565b809150509250929050565b60008060408385031215613d06578182fd5b50508035926020909101359150565b60008060008060008060008060006101208a8c031215613d33578485fd5b8935985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135613d6181614217565b935060c08a0135613d7181614217565b925060e08a0135613d8181614217565b91506101008a0135613d9281614217565b809150509295985092959850929598565b60008151808452613dbb8160208601602086016141a4565b601f01601f19169290920160200192915050565b600063ffffffff60e01b80871683528551613df1816004860160208a016141a4565b855190840190613e08816004840160208a016141a4565b919094169301600481019390935250506008019392505050565b8183823760009101908152919050565b60008251613e448184602087016141a4565b9190910192915050565b60008351613e608184602088016141a4565b6001600160f81b0319939093169190920190815260010192915050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b8781526001600160a01b038781166020808401919091529087166040830152610160820190606083018760005b6002811015613efa57815183529183019190830190600101613edd565b50505060a083018660005b6004811015613f2257815183529183019190830190600101613f05565b50505050610120820193909352610140015295945050505050565b848152836020820152608060408201526000613f5c6080830185613da3565b905082606083015295945050505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b602081526000610c786020830184613da3565b606081526000613fc26060830186613da3565b6001600160a01b039490941660208301525060400152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60405160e081016001600160401b038111828210171561404a5761404a614201565b60405290565b60008219821115614063576140636141eb565b500190565b60006001600160401b0382811684821680830382111561408a5761408a6141eb565b01949350505050565b600060ff821660ff84168060ff038211156140b0576140b06141eb565b019392505050565b60006001600160601b0382811684821680830382111561408a5761408a6141eb565b6000826140f557634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615614114576141146141eb565b500290565b600060ff821660ff84168160ff048111821515161561413a5761413a6141eb565b029392505050565b600082821015614154576141546141eb565b500390565b60006001600160401b0383811690831681811015614179576141796141eb565b039392505050565b600060ff821660ff84168082101561419b5761419b6141eb565b90039392505050565b60005b838110156141bf5781810151838201526020016141a7565b83811115612ee35750506000910152565b60006000198214156141e4576141e46141eb565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461075a57600080fdfe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212206aa05102bec6d075648456aabdfa5c5795d691aea72b4c836201c4f49010ce2c64736f6c63430008040033