@venusprotocol/governance-contracts
Version:
### Prerequisites
936 lines • 77.3 kB
JSON
{
"_format": "hh-sol-artifact-1",
"contractName": "LZEndpointMock",
"sourceName": "@layerzerolabs/solidity-examples/contracts/lzApp/mocks/LZEndpointMock.sol",
"abi": [
{
"inputs": [
{
"internalType": "uint16",
"name": "_chainId",
"type": "uint16"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "srcChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "srcAddress",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
},
{
"indexed": false,
"internalType": "address",
"name": "dstAddress",
"type": "address"
}
],
"name": "PayloadCleared",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "srcChainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "srcAddress",
"type": "bytes"
},
{
"indexed": false,
"internalType": "address",
"name": "dstAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
},
{
"indexed": false,
"internalType": "bytes",
"name": "payload",
"type": "bytes"
},
{
"indexed": false,
"internalType": "bytes",
"name": "reason",
"type": "bytes"
}
],
"name": "PayloadStored",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint16",
"name": "chainId",
"type": "uint16"
},
{
"indexed": false,
"internalType": "bytes",
"name": "srcAddress",
"type": "bytes"
}
],
"name": "UaForceResumeReceive",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "quantity",
"type": "uint256"
}
],
"name": "ValueTransferFailed",
"type": "event"
},
{
"inputs": [],
"name": "blockNextMsg",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "defaultAdapterParams",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_dstChainId",
"type": "uint16"
},
{
"internalType": "address",
"name": "_userApplication",
"type": "address"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
},
{
"internalType": "bool",
"name": "_payInZRO",
"type": "bool"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "estimateFees",
"outputs": [
{
"internalType": "uint256",
"name": "nativeFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "zroFee",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
}
],
"name": "forceResumeReceive",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getChainId",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "getConfig",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_chainID",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
}
],
"name": "getInboundNonce",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_srcAddress",
"type": "bytes"
}
],
"name": "getLengthOfQueue",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_chainID",
"type": "uint16"
},
{
"internalType": "address",
"name": "_srcAddress",
"type": "address"
}
],
"name": "getOutboundNonce",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getReceiveLibraryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getReceiveVersion",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getSendLibraryAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "getSendVersion",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
}
],
"name": "hasStoredPayload",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "inboundNonce",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isReceivingPayload",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "isSendingPayload",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "lzEndpointLookup",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "mockChainId",
"outputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "msgsToDeliver",
"outputs": [
{
"internalType": "address",
"name": "dstAddress",
"type": "address"
},
{
"internalType": "uint64",
"name": "nonce",
"type": "uint64"
},
{
"internalType": "bytes",
"name": "payload",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "nextMsgBlocked",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "oracleFee",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "outboundNonce",
"outputs": [
{
"internalType": "uint64",
"name": "",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolFeeConfig",
"outputs": [
{
"internalType": "uint256",
"name": "zroFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "nativeBP",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
},
{
"internalType": "address",
"name": "_dstAddress",
"type": "address"
},
{
"internalType": "uint64",
"name": "_nonce",
"type": "uint64"
},
{
"internalType": "uint256",
"name": "_gasLimit",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
}
],
"name": "receivePayload",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "relayerFeeConfig",
"outputs": [
{
"internalType": "uint128",
"name": "dstPriceRatio",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "dstGasPriceInWei",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "dstNativeAmtCap",
"type": "uint128"
},
{
"internalType": "uint64",
"name": "baseGas",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "gasPerByte",
"type": "uint64"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_srcChainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
}
],
"name": "retryPayload",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "_chainId",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "_path",
"type": "bytes"
},
{
"internalType": "bytes",
"name": "_payload",
"type": "bytes"
},
{
"internalType": "address payable",
"name": "_refundAddress",
"type": "address"
},
{
"internalType": "address",
"name": "_zroPaymentAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "send",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "setConfig",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "_adapterParams",
"type": "bytes"
}
],
"name": "setDefaultAdapterParams",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "destAddr",
"type": "address"
},
{
"internalType": "address",
"name": "lzEndpointAddr",
"type": "address"
}
],
"name": "setDestLzEndpoint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_oracleFee",
"type": "uint256"
}
],
"name": "setOracleFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_zroFee",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_nativeBP",
"type": "uint256"
}
],
"name": "setProtocolFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"name": "setReceiveVersion",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "_dstPriceRatio",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "_dstGasPriceInWei",
"type": "uint128"
},
{
"internalType": "uint128",
"name": "_dstNativeAmtCap",
"type": "uint128"
},
{
"internalType": "uint64",
"name": "_baseGas",
"type": "uint64"
},
{
"internalType": "uint64",
"name": "_gasPerByte",
"type": "uint64"
}
],
"name": "setRelayerPrice",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
}
],
"name": "setSendVersion",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint16",
"name": "",
"type": "uint16"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "storedPayload",
"outputs": [
{
"internalType": "uint64",
"name": "payloadLength",
"type": "uint64"
},
{
"internalType": "address",
"name": "dstAddress",
"type": "address"
},
{
"internalType": "bytes32",
"name": "payloadHash",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x6080604052600c805461ffff191661010117905534801561001f57600080fd5b5060405161399a38038061399a83398101604081905261003e91610134565b6001805461ffff191661ffff83161781556040805160a0810182526402540be400808252602080830191909152678ac7230489e8000082840152606460608301526080909101929092527402540be400000000000000000000000002540be4006002557801000000000000006400000000000000008ac7230489e800006003558051808201909152670de0b6b3a76400008082526103e891909201819052600491909155600555662386f26fc1000060065561012062030d4060408051600160f01b602082015260228082019390935281518082039093018352604201905290565b60079061012d9082610200565b50506102bf565b60006020828403121561014657600080fd5b815161ffff8116811461015857600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018957607f821691505b6020821081036101a957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101fb576000816000526020600020601f850160051c810160208610156101d85750805b601f850160051c820191505b818110156101f7578281556001016101e4565b5050505b505050565b81516001600160401b038111156102195761021961015f565b61022d816102278454610175565b846101af565b602080601f831160018114610262576000841561024a5750858301515b600019600386901b1c1916600185901b1785556101f7565b600085815260208120601f198616915b8281101561029157888601518255948401946001909101908401610272565b50858210156102af5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6136cc806102ce6000396000f3fe60806040526004361061026a5760003560e01c80639924d33b11610153578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb146109b2578063fbba623b146109c8578063fdc07c70146109e857600080fd5b8063e97a448a14610964578063f5ecbdbc1461098057600080fd5b8063d23104f1116100b0578063d23104f11461090a578063da1a7c9a146102c4578063db14f3051461094957600080fd5b8063ca066b35146108c8578063cbed8b9c146108e957600080fd5b8063b6d9ef6011610122578063c2fa481311610107578063c2fa481314610852578063c580310014610872578063c81b383a1461088557600080fd5b8063b6d9ef60146107c4578063c08f15a1146107e457600080fd5b80639924d33b1461070f5780639c729da1146104e3578063aaff5f1614610762578063b20864991461078257600080fd5b80633408e470116101e657806371ba2fd6116101b55780637a1457481161019a5780637a145748146105e25780637f6df8e61461061b578063907c5e7e1461064957600080fd5b806371ba2fd6146104e357806376a386dc1461052857600080fd5b80633408e4701461046a5780633e0dd83e1461048357806340a7bb10146104a357806342d65a8d146104c357600080fd5b806310ddb1371161023d578063240de27711610222578063240de27714610357578063272bd3841461037d5780632c365e251461039f57600080fd5b806310ddb137146102a457806312a9ee6b1461032857600080fd5b806307d3277f1461026f57806307e0db17146102a4578063096568f6146102c45780630eaf6ea6146102f8575b600080fd5b34801561027b57600080fd5b5060045460055461028a919082565b604080519283526020830191909152015b60405180910390f35b3480156102b057600080fd5b506102c26102bf3660046127d7565b50565b005b3480156102d057600080fd5b506102e56102df366004612814565b50600190565b60405161ffff909116815260200161029b565b34801561030457600080fd5b5061031861031336600461287a565b610a08565b604051901515815260200161029b565b34801561033457600080fd5b506103486103433660046129a7565b610a4e565b60405161029b93929190612a62565b34801561036357600080fd5b506102c2610372366004612aaa565b600491909155600555565b34801561038957600080fd5b50610392610b6a565b60405161029b9190612acc565b3480156103ab57600080fd5b506102c26103ba366004612b17565b6fffffffffffffffffffffffffffffffff94851670010000000000000000000000000000000094861685021760025560038054939095167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921767ffffffffffffffff9182169093029290921777ffffffffffffffffffffffffffffffffffffffffffffffff1678010000000000000000000000000000000000000000000000009190921602179055565b34801561047657600080fd5b5060015461ffff166102e5565b34801561048f57600080fd5b506001546103189062010000900460ff1681565b3480156104af57600080fd5b5061028a6104be366004612b7c565b610bf8565b3480156104cf57600080fd5b506102c26104de36600461287a565b610cf7565b3480156104ef57600080fd5b506105036104fe366004612814565b503090565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b34801561053457600080fd5b506105a7610543366004612c1d565b600a60209081526000928352604090922081518083018401805192815290840192909301919091209152805460019091015467ffffffffffffffff82169168010000000000000000900473ffffffffffffffffffffffffffffffffffffffff169083565b6040805167ffffffffffffffff909416845273ffffffffffffffffffffffffffffffffffffffff90921660208401529082015260600161029b565b3480156105ee57600080fd5b506106026105fd366004612c6b565b610e68565b60405167ffffffffffffffff909116815260200161029b565b34801561062757600080fd5b5061063b61063636600461287a565b610eae565b60405190815260200161029b565b34801561065557600080fd5b506002546003546106c1916fffffffffffffffffffffffffffffffff80821692700100000000000000000000000000000000928390048216929181169167ffffffffffffffff908204811691780100000000000000000000000000000000000000000000000090041685565b604080516fffffffffffffffffffffffffffffffff96871681529486166020860152929094169183019190915267ffffffffffffffff9081166060830152909116608082015260a00161029b565b34801561071b57600080fd5b5061060261072a366004612c1d565b6008602090815260009283526040909220815180830184018051928152908401929093019190912091525467ffffffffffffffff1681565b34801561076e57600080fd5b506102c261077d366004612ca2565b610eea565b34801561078e57600080fd5b5061060261079d366004612c6b565b600960209081526000928352604080842090915290825290205467ffffffffffffffff1681565b3480156107d057600080fd5b506102c26107df366004612d23565b600655565b3480156107f057600080fd5b506102c26107ff366004612d3c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561085e57600080fd5b506102c261086d366004612d5a565b611152565b6102c2610880366004612e0a565b611aab565b34801561089157600080fd5b506105036108a0366004612814565b60006020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156108d457600080fd5b50610318600c54610100900460ff1660021490565b3480156108f557600080fd5b506102c2610904366004612ed2565b50505050565b34801561091657600080fd5b506102c2600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1662010000179055565b34801561095557600080fd5b506001546102e59061ffff1681565b34801561097057600080fd5b50610318600c5460ff1660021490565b34801561098c57600080fd5b5061039261099b366004612f3a565b604080516020810190915260008152949350505050565b3480156109be57600080fd5b5061063b60065481565b3480156109d457600080fd5b506102c26109e3366004612f87565b612127565b3480156109f457600080fd5b50610602610a0336600461287a565b612137565b61ffff83166000908152600a60205260408082209051829190610a2e9086908690612fc4565b9081526040519081900360200190206001015415159150505b9392505050565b600b6020908152600084815260409020835180850183018051928152908301928501929092209152805482908110610a8557600080fd5b60009182526020909120600290910201805460018201805473ffffffffffffffffffffffffffffffffffffffff831696507401000000000000000000000000000000000000000090920467ffffffffffffffff169450919250610ae790612fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610b1390612fd4565b8015610b605780601f10610b3557610100808354040283529160200191610b60565b820191906000526020600020905b815481529060010190602001808311610b4357829003601f168201915b5050505050905083565b60078054610b7790612fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba390612fd4565b8015610bf05780601f10610bc557610100808354040283529160200191610bf0565b820191906000526020600020905b815481529060010190602001808311610bd357829003601f168201915b505050505081565b600080600080845111610c955760078054610c1290612fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054610c3e90612fd4565b8015610c8b5780601f10610c6057610100808354040283529160200191610c8b565b820191906000526020600020905b815481529060010190602001808311610c6e57829003601f168201915b5050505050610c97565b835b90506000610caa8960018a8a518661217d565b90506000610cbb8783600654612398565b905086610ccb5780945084610cd0565b809350835b50600654610cde8387613056565b610ce89190613056565b94505050509550959350505050565b61ffff83166000908152600a60205260408082209051610d1a9085908590612fc4565b9081526040519081900360200190206001810154909150610d825760405162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f616460448201526064015b60405180910390fd5b805468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610df45760405162461bcd60e51b815260206004820152601d60248201527f4c617965725a65726f4d6f636b3a20696e76616c69642063616c6c65720000006044820152606401610d79565b80547fffffffff00000000000000000000000000000000000000000000000000000000168155600060018201556040517f23d2684f396e92a6e2ff2d16f98e6fea00d50cb27a64b531bc0748f730211f9890610e55908690869086906130b2565b60405180910390a16109048484846123d5565b61ffff8216600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205467ffffffffffffffff165b92915050565b61ffff83166000908152600b60205260408082209051610ed19085908590612fc4565b9081526040519081900360200190205490509392505050565b61ffff85166000908152600a60205260408082209051610f0d9087908790612fc4565b9081526040519081900360200190206001810154909150610f705760405162461bcd60e51b815260206004820181905260248201527f4c617965725a65726f4d6f636b3a206e6f2073746f726564207061796c6f61646044820152606401610d79565b805467ffffffffffffffff1682148015610fa4575080600101548383604051610f9a929190612fc4565b6040518091039020145b610ff05760405162461bcd60e51b815260206004820152601e60248201527f4c617965725a65726f4d6f636b3a20696e76616c6964207061796c6f616400006044820152606401610d79565b80547fffffffff000000000000000000000000000000000000000000000000000000008116825560006001830181905561ffff881681526008602052604080822090516801000000000000000090930473ffffffffffffffffffffffffffffffffffffffff16926110649089908990612fc4565b908152604051908190036020018120547e1d356700000000000000000000000000000000000000000000000000000000825267ffffffffffffffff16915073ffffffffffffffffffffffffffffffffffffffff831690621d3567906110d7908b908b908b9087908c908c906004016130d0565b600060405180830381600087803b1580156110f157600080fd5b505af1158015611105573d6000803e3d6000fd5b505050507f612434f39581c8e7d99746c9c20c6eb0ce8c0eb99f007c5719d620841370957d888888848660405161114095949392919061311e565b60405180910390a15050505050505050565b600c54610100900460ff166001146111d15760405162461bcd60e51b8152602060048201526024808201527f4c617965725a65726f4d6f636b3a206e6f2072656365697665207265656e747260448201527f616e6379000000000000000000000000000000000000000000000000000000006064820152608401610d79565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661020017905561ffff88166000908152600a60205260408082209051611220908a908a90612fc4565b90815260200160405180910390209050600860008a61ffff1661ffff168152602001908152602001600020888860405161125b929190612fc4565b90815260405190819003602001902080546000906112829067ffffffffffffffff16613174565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905567ffffffffffffffff168567ffffffffffffffff16146113095760405162461bcd60e51b815260206004820152601a60248201527f4c617965725a65726f4d6f636b3a2077726f6e67206e6f6e63650000000000006044820152606401610d79565b6001810154156116d15761ffff89166000908152600b60205260408082209051611336908b908b90612fc4565b90815260200160405180910390209050600060405180606001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018867ffffffffffffffff16815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505091525082549091501561162b578154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff90941693909317178255604083015183929182019061145c90826131ec565b50505060005b825461147090600190613306565b8110156115795782818154811061148957611489613319565b9060005260206000209060020201838260016114a59190613056565b815481106114b5576114b5613319565b600091825260209091208254600290920201805473ffffffffffffffffffffffffffffffffffffffff9092167fffffffffffffffffffffffff000000000000000000000000000000000000000083168117825583547fffffffff0000000000000000000000000000000000000000000000000000000090931617740100000000000000000000000000000000000000009283900467ffffffffffffffff1690920291909117815560018082019061156e90840182613348565b505050600101611462565b50808260008154811061158e5761158e613319565b6000918252602091829020835160029092020180549284015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931673ffffffffffffffffffffffffffffffffffffffff909216919091179190911781556040820151600182019061162290826131ec565b509050506116ca565b8154600181810184556000848152602090819020845160029094020180549185015167ffffffffffffffff1674010000000000000000000000000000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff9094169390931717825560408301518392918201906116c690826131ec565b5050505b5050611a74565b60015462010000900460ff16156118545760405180606001604052808484905067ffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff168152602001848460405161172c929190612fc4565b604080519182900390912090915261ffff8b166000908152600a602052819020905161175b908b908b90612fc4565b908152604080519182900360209081018320845181548684015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090911667ffffffffffffffff909216919091171781559382015160019094019390935591810182526000815290517f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db9161181f918c918c918c918c918c918b918b919061347d565b60405180910390a1600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff169055611a74565b6040517e1d356700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690621d35679086906118b0908d908d908d908c908b908b906004016130d0565b600060405180830381600088803b1580156118ca57600080fd5b5087f1935050505080156118dc575060015b611a74573d80801561190a576040519150601f19603f3d011682016040523d82523d6000602084013e61190f565b606091505b5060405180606001604052808585905067ffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff168152602001858560405161195a929190612fc4565b604080519182900390912090915261ffff8c166000908152600a6020528190209051611989908c908c90612fc4565b908152604080519182900360209081018320845181549286015173ffffffffffffffffffffffffffffffffffffffff1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090931667ffffffffffffffff909116179190911781559201516001909201919091557f0f9e4d95b62f08222d612b5ab92039cd8fbbbea550a95e8df9f927436bbdf5db90611a42908c908c908c908c908c908b908b908a9061347d565b60405180910390a150600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffff1690555b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010017905550505050505050565b600c5460ff16600114611b265760405162461bcd60e51b815260206004820152602160248201527f4c617965725a65726f4d6f636b3a206e6f2073656e64207265656e7472616e6360448201527f79000000000000000000000000000000000000000000000000000000000000006064820152608401610d79565b600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660021790558551602814611bc85760405162461bcd60e51b815260206004820152602c60248201527f4c617965725a65726f4d6f636b3a20696e636f72726563742072656d6f74652060448201527f616464726573732073697a6500000000000000000000000000000000000000006064820152608401610d79565b601486015173ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260409020541680611c685760405162461bcd60e51b815260206004820152603760248201527f4c617965725a65726f4d6f636b3a2064657374696e6174696f6e204c6179657260448201527f5a65726f20456e64706f696e74206e6f7420666f756e640000000000000000006064820152608401610d79565b600080845111611d025760078054611c7f90612fd4565b80601f0160208091040260200160405190810160405280929190818152602001828054611cab90612fd4565b8015611cf85780601f10611ccd57610100808354040283529160200191611cf8565b820191906000526020600020905b815481529060010190602001808311611cdb57829003601f168201915b5050505050611d04565b835b90506000611d628b338b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050505073ffffffffffffffffffffffffffffffffffffffff8a16151586610bf8565b50905080341015611ddb5760405162461bcd60e51b815260206004820152602960248201527f4c617965725a65726f4d6f636b3a206e6f7420656e6f756768206e617469766560448201527f20666f72206665657300000000000000000000000000000000000000000000006064820152608401610d79565b61ffff8b166000908152600960209081526040808320338452909152812080548290611e109067ffffffffffffffff16613174565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055905060008234611e459190613306565b90508015611eff5760008973ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611ea7576040519150601f19603f3d011682016040523d82523d6000602084013e611eac565b606091505b5050905080611efd5760405162461bcd60e51b815260206004820152601f60248201527f4c617965725a65726f4d6f636b3a206661696c656420746f20726566756e64006044820152606401610d79565b505b6000806000611f0d8761262e565b91955093509150508115611fc95760008173ffffffffffffffffffffffffffffffffffffffff168360405160006040518083038185875af1925050503d8060008114611f75576040519150601f19603f3d011682016040523d82523d6000602084013e611f7a565b606091505b5050905080611fc757604051839073ffffffffffffffffffffffffffffffffffffffff8416907f2c7a964ca3de5ec1d42d9822f9bbd0eb142a59cc9f855e9d93813b773192c7a390600090a35b505b6040517fffffffffffffffffffffffffffffffffffffffff00000000000000000000000033606090811b821660208401528b901b166034820152600090604801604051602081830303815290604052905060008f8f8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505090508973ffffffffffffffffffffffffffffffffffffffff1663c2fa4813600160009054906101000a900461ffff16848e8b8a876040518763ffffffff1660e01b81526004016120b6969594939291906134fd565b600060405180830381600087803b1580156120d057600080fd5b505af11580156120e4573d6000803e3d6000fd5b5050600c80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050505050505050505050505050565b600761213382826131ec565b5050565b61ffff8316600090815260086020526040808220905161215a9085908590612fc4565b9081526040519081900360200190205467ffffffffffffffff1690509392505050565b60008060008061218c8561262e565b5092509250925060008361ffff16600203612238576003546fffffffffffffffffffffffffffffffff1682111561222b5760405162461bcd60e51b815260206004820152602660248201527f4c617965725a65726f4d6f636b3a206473744e6174697665416d7420746f6f2060448201527f6c617267652000000000000000000000000000000000000000000000000000006064820152608401610d79565b6122358282613056565b90505b600354600090612267908590700100000000000000000000000000000000900467ffffffffffffffff16613056565b60025461229a919070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1661355e565b90506122a68183613056565b6002549092506000906402540be400906122d2906fffffffffffffffffffffffffffffffff168561355e565b6122dc91906135a4565b6002546003549192506000916402540be400916fffffffffffffffffffffffffffffffff8082169261234b92780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1691700100000000000000000000000000000000909104166135b8565b61235591906135b8565b61235f91906135ec565b6fffffffffffffffffffffffffffffffff16905061237d818b61355e565b6123879083613056565b9d9c50505050505050505050505050565b600083156123a95750600454610a47565b600554612710906123ba8486613056565b6123c4919061355e565b6123ce91906135a4565b9050610a47565b61ffff83166000908152600b602052604080822090516123f89085908590612fc4565b908152602001604051809103902090505b805415610904578054600090829061242390600190613306565b8154811061243357612433613319565b6000918252602091829020604080516060810182526002909302909101805473ffffffffffffffffffffffffffffffffffffffff8116845267ffffffffffffffff740100000000000000000000000000000000000000009091041693830193909352600183018054929392918401916124ab90612fd4565b80601f01602080910402602001604051908101604052809291908181526020018280546124d790612fd4565b80156125245780601f106124f957610100808354040283529160200191612524565b820191906000526020600020905b81548152906001019060200180831161250757829003601f168201915b5050505050815250509050806000015173ffffffffffffffffffffffffffffffffffffffff16621d3567868686856020015186604001516040518663ffffffff1660e01b815260040161257b95949392919061361b565b600060405180830381600087803b15801561259557600080fd5b505af11580156125a9573d6000803e3d6000fd5b50505050818054806125bd576125bd613667565b60008281526020812060027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff00000000000000000000000000000000000000000000000000000000168155906126246001830182612772565b5050905550612409565b600080600080845160221480612645575060428551115b6126915760405162461bcd60e51b815260206004820152601560248201527f496e76616c69642061646170746572506172616d7300000000000000000000006044820152606401610d79565b60028501519350602285015192508361ffff16600114806126b657508361ffff166002145b6127025760405162461bcd60e51b815260206004820152601260248201527f556e737570706f727465642074785479706500000000000000000000000000006044820152606401610d79565b600083116127525760405162461bcd60e51b815260206004820152600b60248201527f47617320746f6f206c6f770000000000000000000000000000000000000000006044820152606401610d79565b8361ffff1660020361276b575050604283015160568401515b9193509193565b50805461277e90612fd4565b6000825580601f1061278e575050565b601f0160209004906000526020600020908101906102bf91905b808211156127bc57600081556001016127a8565b5090565b803561ffff811681146127d257600080fd5b919050565b6000602082840312156127e957600080fd5b610a47826127c0565b73ffffffffffffffffffffffffffffffffffffffff811681146102bf57600080fd5b60006020828403121561282657600080fd5b8135610a47816127f2565b60008083601f84011261284357600080fd5b50813567ffffffffffffffff81111561285b57600080fd5b60208301915083602082850101111561287357600080fd5b9250929050565b60008060006040848603121561288f57600080fd5b612898846127c0565b9250602084013567ffffffffffffffff8111156128b457600080fd5b6128c086828701612831565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261290d57600080fd5b813567ffffffffffffffff80821115612928576129286128cd565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561296e5761296e6128cd565b8160405283815286602085880101111561298757600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000606084860312156129bc57600080fd5b6129c5846127c0565b9250602084013567ffffffffffffffff8111156129e157600080fd5b6129ed868287016128fc565b925050604084013590509250925092565b6000815180845260005b81811015612a2457602081850181015186830182015201612a08565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000612aa160608301846129fe565b95945050505050565b60008060408385031215612abd57600080fd5b50508035926020909101359150565b602081526000610a4760208301846129fe565b80356fffffffffffffffffffffffffffffffff811681146127d257600080fd5b803567ffffffffffffffff811681146127d257600080fd5b600080600080600060a08688031215612b2f57600080fd5b612b3886612adf565b9450612b4660208701612adf565b9350612b5460408701612adf565b9250612b6260608701612aff565b9150612b7060808701612aff565b90509295509295909350565b600080600080600060a08688031215612b9457600080fd5b612b9d866127c0565b94506020860135612bad816127f2565b9350604086013567ffffffffffffffff80821115612bca57600080fd5b612bd689838a016128fc565b9450606088013591508115158214612bed57600080fd5b90925060808701359080821115612c0357600080fd5b50612c10888289016128fc565b9150509295509295909350565b60008060408385031215612c3057600080fd5b612c39836127c0565b9150602083013567ffffffffffffffff811115612c5557600080fd5b612c61858286016128fc565b9150509250929050565b60008060408385031215612c7e57600080fd5b612c87836127c0565b91506020830135612c97816127f2565b809150509250929050565b600080600080600060608688031215612cba57600080fd5b612cc3866127c0565b9450602086013567ffffffffffffffff80821115612ce057600080fd5b612cec89838a01612831565b90965094506040880135915080821115612d0557600080fd5b50612d1288828901612831565b969995985093965092949392505050565b600060208284031215612d3557600080fd5b5035919050565b60008060408385031215612d4f57600080fd5b8235612c87816127f2565b60008060008060008060008060c0898b031215612d7657600080fd5b612d7f896127c0565b9750602089013567ffffffffffffffff80821115612d9c57600080fd5b612da88c838d01612831565b909950975060408b01359150612dbd826127f2565b819650612dcc60608c01612aff565b955060808b0135945060a08b0135915080821115612de957600080fd5b50612df68b828c01612831565b999c989b5096995094979396929594505050565b600080600080600080600060c0888a031215612e2557600080fd5b612e2e886127c0565b9650602088013567ffffffffffffffff80821115612e4b57600080fd5b612e578b838c016128fc565b975060408a0135915080821115612e6d57600080fd5b612e798b838c01612831565b909750955060608a01359150612e8e826127f2565b909350608089013590612ea0826127f2565b90925060a08901359080821115612eb657600080fd5b50612ec38a828b016128fc565b91505092959891949750929550565b60008060008060808587031215612ee857600080fd5b612ef1856127c0565b9350612eff602086016127c0565b925060408501359150606085013567ffffffffffffffff811115612f2257600080fd5b612f2e878288016128fc565b91505092959194509250565b60008060008060808587031215612f5057600080fd5b612f59856127c0565b9350612f67602086016127c0565b92506040850135612f77816127f2565b9396929550929360600135925050565b600060208284031215612f9957600080fd5b813567ffffffffffffffff811115612fb057600080fd5b612fbc848285016128fc565b949350505050565b8183823760009101908152919050565b600181811c90821680612fe857607f821691505b602082108103613021577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610ea857610ea8613027565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b61ffff84168152604060208201526000612aa1604083018486613069565b61ffff871681526080602082015260006130ee608083018789613069565b67ffffffffffffffff861660408401528281036060840152613111818587613069565b9998505050505050505050565b61ffff8616815260806020820152600061313c608083018688613069565b905067ffffffffffffffff8416604083015273ffffffffffffffffffffffffffffffffffffffff831660608301529695505050505050565b600067ffffffffffffffff80831681810361319157613191613027565b6001019392505050565b601f8211156131e7576000816000526020600020601f850160051c810160208610156131c45750805b601f850160051c820191505b818110156131e3578281556001016131d0565b5050505b505050565b815167ffffffffffffffff811115613206576132066128cd565b61321a816132148454612fd4565b8461319b565b602080601f83116001811461326d57600084156132375750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556131e3565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156132ba5788860151825594840194600190910190840161329b565b50858210156132f657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b81810381811115610ea857610ea8613027565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103613353575050565b61335d8254612fd4565b67ffffffffffffffff811115613375576133756128cd565b613383816132148454612fd4565b6000601f8211600181146133d5576000831561339f5750848201545b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455613476565b6000858152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0841690600086815260209020845b8381101561342d578286015482556001958601959091019060200161340d565b508583101561346957818501547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b50505060018360011b0184555b5050505050565b61ffff8916815260c06020820152600061349b60c08301898b613069565b73ffffffffffffffffffffffffffffffffffffffff8816604084015267ffffffffffffffff8716606084015282810360808401526134da818688613069565b905082810360a08401526134ee81856129fe565b9b9a5050505050505050505050565b61ffff8716815260c06020820152600061351a60c08301886129fe565b73ffffffffffffffffffffffffffffffffffffffff8716604084015267ffffffffffffffff8616606084015284608084015282810360a084015261311181856129fe565b8082028115828204841417610ea857610ea8613027565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826135b3576135b3613575565b500490565b6fffffffffffffffffffffffffffffffff8181168382160280821691908281146135e4576135e4613027565b505092915050565b60006fffffffffffffffffffffffffffffffff8084168061360f5761360f613575565b92169190910492915050565b61ffff86168152608060208201526000613639608083018688613069565b67ffffffffffffffff85166040840152828103606084015261365b81856129fe565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220b0ab817030528fa2895fd39b9e3a47c1921762205d7e5ede8791dca3421d241b64736f6c63430008190033",
"deployedBytecode": "0x60806040526004361061026a5760003560e01c80639924d33b11610153578063ca066b35116100cb578063e97a448a1161007f578063f9cd3ceb11610064578063f9cd3ceb146109b2578063fbba623b146109c8578063fdc07c70146109e857600080fd5b8063e97a448a14610964578063f5ecbdbc1461098057600080fd5b8063d23104f1116100b0578063d23104f11461090a578063da1a7c9a146102c4578063db14f3051461094957600080fd5b8063ca066b35146108c8578063cbed8b9c146108e957600080fd5b8063b6d9ef6011610122578063c2fa481311610107578063c2fa481314610852578063c580310014610872578063c81b383a1461088557600080fd5b8063b6d9ef60146107c4578063c08f15a1146107e457600080fd5b80639924d33b1461070f5780639c729da1146104e3578063aaff5f1614610762578063b20864991461078257600080fd5b80633408e470116101e657806371ba2fd6116101b55780637a1457481161019a5780637a145748146105e25780637f6df8e61461061b