{
    "address": "0xDBef662C6b49509A0bA1DfbDB8aD4b2a4D7d807B",
    "abi": [
        {
            "inputs": [],
            "name": "EncodedCancel",
            "outputs": [
                {
                    "internalType": "bytes",
                    "name": "",
                    "type": "bytes"
                }
            ],
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "Name",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "ResolverEncoding",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "StateEncoding",
            "outputs": [
                {
                    "internalType": "string",
                    "name": "",
                    "type": "string"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "encodedBalance",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedState",
                    "type": "bytes"
                }
            ],
            "name": "create",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getRegistryInformation",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "string",
                            "name": "name",
                            "type": "string"
                        },
                        {
                            "internalType": "address",
                            "name": "definition",
                            "type": "address"
                        },
                        {
                            "internalType": "string",
                            "name": "stateEncoding",
                            "type": "string"
                        },
                        {
                            "internalType": "string",
                            "name": "resolverEncoding",
                            "type": "string"
                        },
                        {
                            "internalType": "bytes",
                            "name": "encodedCancel",
                            "type": "bytes"
                        }
                    ],
                    "internalType": "struct RegisteredTransfer",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes",
                    "name": "encodedBalance",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedState",
                    "type": "bytes"
                },
                {
                    "internalType": "bytes",
                    "name": "encodedResolver",
                    "type": "bytes"
                }
            ],
            "name": "resolve",
            "outputs": [
                {
                    "components": [
                        {
                            "internalType": "uint256[2]",
                            "name": "amount",
                            "type": "uint256[2]"
                        },
                        {
                            "internalType": "address payable[2]",
                            "name": "to",
                            "type": "address[2]"
                        }
                    ],
                    "internalType": "struct Balance",
                    "name": "",
                    "type": "tuple"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "transactionHash": "0xdcc6ed8d621c7f200efa170c742c63a630bccfa1b42c8c4ff7413fe12074a050",
    "receipt": {
        "to": null,
        "from": "0x627306090abaB3A6e1400e9345bC60c78a8BEf57",
        "contractAddress": "0xDBef662C6b49509A0bA1DfbDB8aD4b2a4D7d807B",
        "transactionIndex": 10,
        "gasUsed": "795245",
        "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
        "blockHash": "0x1aa38d549e978c4f46f923d9ae6aeb64dfe1e97d2713e30c0aa197604b906158",
        "transactionHash": "0xdcc6ed8d621c7f200efa170c742c63a630bccfa1b42c8c4ff7413fe12074a050",
        "logs": [],
        "blockNumber": 7772115,
        "cumulativeGasUsed": "1741563",
        "status": 1,
        "byzantium": true
    },
    "args": [],
    "solcInputHash": "89c55d5a88f10637860a9ea31a1daad3",
    "metadata": "{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EncodedCancel\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ResolverEncoding\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"StateEncoding\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedBalance\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegistryInformation\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"definition\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"stateEncoding\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"resolverEncoding\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"encodedCancel\",\"type\":\"bytes\"}],\"internalType\":\"struct RegisteredTransfer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedBalance\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedResolver\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"amount\",\"type\":\"uint256[2]\"},{\"internalType\":\"address payable[2]\",\"name\":\"to\",\"type\":\"address[2]\"}],\"internalType\":\"struct Balance\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Connext <support@connext.network>\",\"kind\":\"dev\",\"methods\":{},\"title\":\"HashlockTransfer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"This contract allows users to claim a payment locked in         the application if they provide the correct preImage. The payment is         reverted if not unlocked by the timelock if one is provided.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src.sol/transferDefinitions/HashlockTransfer.sol\":\"HashlockTransfer\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"src.sol/interfaces/ITransferDefinition.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./ITransferRegistry.sol\\\";\\nimport \\\"./Types.sol\\\";\\n\\ninterface ITransferDefinition {\\n    // Validates the initial state of the transfer.\\n    // Called by validator.ts during `create` updates.\\n    function create(bytes calldata encodedBalance, bytes calldata)\\n        external\\n        view\\n        returns (bool);\\n\\n    // Performs a state transition to resolve a transfer and returns final balances.\\n    // Called by validator.ts during `resolve` updates.\\n    function resolve(\\n        bytes calldata encodedBalance,\\n        bytes calldata,\\n        bytes calldata\\n    ) external view returns (Balance memory);\\n\\n    // Should also have the following properties:\\n    // string public constant override Name = \\\"...\\\";\\n    // string public constant override StateEncoding = \\\"...\\\";\\n    // string public constant override ResolverEncoding = \\\"...\\\";\\n    // These properties are included on the transfer specifically\\n    // to make it easier for implementers to add new transfers by\\n    // only include a `.sol` file\\n    function Name() external view returns (string memory);\\n\\n    function StateEncoding() external view returns (string memory);\\n\\n    function ResolverEncoding() external view returns (string memory);\\n\\n    function EncodedCancel() external view returns (bytes memory);\\n\\n    function getRegistryInformation()\\n        external\\n        view\\n        returns (RegisteredTransfer memory);\\n}\\n\",\"keccak256\":\"0xd8eef575aa791b187397c9096e6cf40431b590d3999f0a80e38f3e59f4cf4764\",\"license\":\"UNLICENSED\"},\"src.sol/interfaces/ITransferRegistry.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental \\\"ABIEncoderV2\\\";\\n\\nstruct RegisteredTransfer {\\n    string name;\\n    address definition;\\n    string stateEncoding;\\n    string resolverEncoding;\\n    bytes encodedCancel;\\n}\\n\\ninterface ITransferRegistry {\\n    event TransferAdded(RegisteredTransfer transfer);\\n\\n    event TransferRemoved(RegisteredTransfer transfer);\\n\\n    // Should add a transfer definition to the registry\\n    // onlyOwner\\n    function addTransferDefinition(RegisteredTransfer memory transfer) external;\\n\\n    // Should remove a transfer definition to the registry\\n    // onlyOwner\\n    function removeTransferDefinition(string memory name) external;\\n\\n    // Should return all transfer defintions in registry\\n    function getTransferDefinitions()\\n        external\\n        view\\n        returns (RegisteredTransfer[] memory);\\n}\\n\",\"keccak256\":\"0xd13be6d976c64e381a0d9df10c621cd964454b6916f25df4ea6c1b4cd873a58a\",\"license\":\"UNLICENSED\"},\"src.sol/interfaces/Types.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nstruct Balance {\\n    uint256[2] amount; // [alice, bob] in channel, [initiator, responder] in transfer\\n    address payable[2] to; // [alice, bob] in channel, [initiator, responder] in transfer\\n}\\n\",\"keccak256\":\"0xf8c71b155b630cde965f5d1db5f0d2751a9763f5a797f15d946613e9224f1046\",\"license\":\"UNLICENSED\"},\"src.sol/transferDefinitions/HashlockTransfer.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"./TransferDefinition.sol\\\";\\n\\n/// @title HashlockTransfer\\n/// @author Connext <support@connext.network>\\n/// @notice This contract allows users to claim a payment locked in\\n///         the application if they provide the correct preImage. The payment is\\n///         reverted if not unlocked by the timelock if one is provided.\\n\\ncontract HashlockTransfer is TransferDefinition {\\n    struct TransferState {\\n        bytes32 lockHash;\\n        uint256 expiry; // If 0, then no timelock is enforced\\n    }\\n\\n    struct TransferResolver {\\n        bytes32 preImage;\\n    }\\n\\n    // Provide registry information\\n    string public constant override Name = \\\"HashlockTransfer\\\";\\n    string public constant override StateEncoding =\\n        \\\"tuple(bytes32 lockHash, uint256 expiry)\\\";\\n    string public constant override ResolverEncoding =\\n        \\\"tuple(bytes32 preImage)\\\";\\n\\n    function EncodedCancel() external pure override returns(bytes memory) {\\n      TransferResolver memory resolver;\\n      resolver.preImage = bytes32(0);\\n      return abi.encode(resolver);\\n    } \\n\\n    function create(bytes calldata encodedBalance, bytes calldata encodedState)\\n        external\\n        view\\n        override\\n        returns (bool)\\n    {\\n        // Decode parameters\\n        TransferState memory state = abi.decode(encodedState, (TransferState));\\n        Balance memory balance = abi.decode(encodedBalance, (Balance));\\n\\n        require(\\n            balance.amount[0] > 0,\\n            \\\"HashlockTransfer: ZER0_SENDER_BALANCE\\\"\\n        );\\n\\n        require(\\n            balance.amount[1] == 0,\\n            \\\"HashlockTransfer: NONZERO_RECIPIENT_BALANCE\\\"\\n        );\\n        require(\\n            state.lockHash != bytes32(0),\\n            \\\"HashlockTransfer: EMPTY_LOCKHASH\\\"\\n        );\\n        require(\\n            state.expiry == 0 || state.expiry > block.timestamp,\\n            \\\"HashlockTransfer: EXPIRED_TIMELOCK\\\"\\n        );\\n\\n        // Valid transfer state\\n        return true;\\n    }\\n\\n    function resolve(\\n        bytes calldata encodedBalance,\\n        bytes calldata encodedState,\\n        bytes calldata encodedResolver\\n    ) external view override returns (Balance memory) {\\n        TransferState memory state = abi.decode(encodedState, (TransferState));\\n        TransferResolver memory resolver =\\n            abi.decode(encodedResolver, (TransferResolver));\\n        Balance memory balance = abi.decode(encodedBalance, (Balance));\\n\\n        // If you pass in bytes32(0), payment is canceled\\n        // If timelock is nonzero and has expired, payment must be canceled\\n        // otherwise resolve will revert\\n        if (resolver.preImage != bytes32(0)) {\\n            // Payment must not be expired\\n            require(state.expiry == 0 || state.expiry > block.timestamp, \\\"HashlockTransfer: PAYMENT_EXPIRED\\\");\\n\\n            // Check hash for normal payment unlock\\n            bytes32 generatedHash = sha256(abi.encode(resolver.preImage));\\n            require(\\n                state.lockHash == generatedHash,\\n                \\\"HashlockTransfer: INVALID_PREIMAGE\\\"\\n            );\\n\\n            // Update state\\n            balance.amount[1] = balance.amount[0];\\n            balance.amount[0] = 0;\\n        }\\n        // To cancel, the preImage must be empty (not simply incorrect)\\n        // There are no additional state mutations, and the preImage is\\n        // asserted by the `if` statement\\n\\n        return balance;\\n    }\\n}\\n\",\"keccak256\":\"0x0c403a415e87408f8f7be80d9ec3e4415189d5e85fb58e9ddef5730e4a2ae98e\",\"license\":\"UNLICENSED\"},\"src.sol/transferDefinitions/TransferDefinition.sol\":{\"content\":\"// SPDX-License-Identifier: UNLICENSED\\npragma solidity ^0.7.1;\\npragma experimental ABIEncoderV2;\\n\\nimport \\\"../interfaces/ITransferDefinition.sol\\\";\\nimport \\\"../interfaces/ITransferRegistry.sol\\\";\\n\\n/// @title TransferDefinition\\n/// @author Connext <support@connext.network>\\n/// @notice This contract helps reduce boilerplate needed when creating\\n///         new transfer definitions by providing an implementation of\\n///         the required getter\\n\\nabstract contract TransferDefinition is ITransferDefinition {\\n    function getRegistryInformation()\\n        external\\n        view\\n        override\\n        returns (RegisteredTransfer memory)\\n    {\\n        return\\n            RegisteredTransfer({\\n                name: this.Name(),\\n                stateEncoding: this.StateEncoding(),\\n                resolverEncoding: this.ResolverEncoding(),\\n                definition: address(this),\\n                encodedCancel: this.EncodedCancel()\\n            });\\n    }\\n}\\n\",\"keccak256\":\"0xdb8bcb3fadd5c514bc6585b0a48d66952570bbb1a62f18b9dc9a4f693dc11c5e\",\"license\":\"UNLICENSED\"}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b50610d6c806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638052474d1161005b5780638052474d146100bd5780638de8b77e146100c55780638ef98a7e146100cd57806394184ba9146100ed5761007d565b80630528aa1c14610082578063206162be146100a05780633722aff9146100b5575b600080fd5b61008a61010d565b6040516100979190610a10565b60405180910390f35b6100a8610141565b6040516100979190610c1e565b61008a61034d565b61008a610386565b61008a6103b2565b6100e06100db3660046107ae565b6103ce565b6040516100979190610bb4565b6101006100fb366004610745565b61050e565b60405161009791906109fc565b60606101176105da565b6000815260405161012c908290602001610cae565b60405160208183030381529060405291505090565b6101496105ec565b6040518060a00160405280306001600160a01b0316638052474d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561018d57600080fd5b505afa1580156101a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c99190810190610844565b8152602001306001600160a01b03168152602001306001600160a01b0316638de8b77e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102529190810190610844565b8152602001306001600160a01b0316633722aff96040518163ffffffff1660e01b815260040160006040518083038186803b15801561029057600080fd5b505afa1580156102a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102cc9190810190610844565b8152602001306001600160a01b0316630528aa1c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103469190810190610844565b9052905090565b6040518060400160405280601781526020017f7475706c65286279746573333220707265496d6167652900000000000000000081525081565b6040518060400160405280601081526020016f2430b9b43637b1b5aa3930b739b332b960811b81525081565b604051806060016040528060278152602001610d106027913981565b6103d6610624565b6103de610649565b6103ea85870187610981565b90506103f46105da565b6104008486018661095c565b905061040a610624565b610416898b018b61087f565b82519091501561050157602083015115806104345750428360200151115b6104595760405162461bcd60e51b815260040161045090610b3e565b60405180910390fd5b6000600283600001516040516020016104729190610a07565b60408051601f198184030181529082905261048c916109e0565b602060405180830381855afa1580156104a9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104cc919061072d565b845190915081146104ef5760405162461bcd60e51b815260040161045090610a75565b50805180516020909101528051600090525b9998505050505050505050565b6000610518610649565b61052483850185610981565b905061052e610624565b61053a8688018861087f565b80515190915061055c5760405162461bcd60e51b815260040161045090610ab7565b8051602001511561057f5760405162461bcd60e51b815260040161045090610a2a565b815161059d5760405162461bcd60e51b815260040161045090610b7f565b602082015115806105b15750428260200151115b6105cd5760405162461bcd60e51b815260040161045090610afc565b5060019695505050505050565b60408051602081019091526000815290565b6040518060a001604052806060815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b6040518060400160405280610637610660565b8152602001610644610660565b905290565b604080518082019091526000808252602082015290565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261068f578182fd5b50813567ffffffffffffffff8111156106a6578182fd5b6020830191508360208285010111156106be57600080fd5b9250929050565b600082601f8301126106d5578081fd5b815167ffffffffffffffff8111156106eb578182fd5b6106fe601f8201601f1916602001610cb8565b915080825283602082850101111561071557600080fd5b610726816020840160208601610cdf565b5092915050565b60006020828403121561073e578081fd5b5051919050565b6000806000806040858703121561075a578283fd5b843567ffffffffffffffff80821115610771578485fd5b61077d8883890161067e565b90965094506020870135915080821115610795578384fd5b506107a28782880161067e565b95989497509550505050565b600080600080600080606087890312156107c6578182fd5b863567ffffffffffffffff808211156107dd578384fd5b6107e98a838b0161067e565b90985096506020890135915080821115610801578384fd5b61080d8a838b0161067e565b90965094506040890135915080821115610825578384fd5b5061083289828a0161067e565b979a9699509497509295939492505050565b600060208284031215610855578081fd5b815167ffffffffffffffff81111561086b578182fd5b610877848285016106c5565b949350505050565b600060808284031215610890578081fd5b61089a6040610cb8565b83601f8401126108a8578182fd5b6108b26040610cb8565b808460408601878111156108c4578586fd5b855b60028110156108e55782358552602094850194909201916001016108c6565b5082855287605f8801126108f7578586fd5b6109016040610cb8565b9350839250905060808601871015610917578485fd5b845b600281101561094d5781356001600160a01b0381168114610938578687fd5b84526020938401939190910190600101610919565b50506020830152509392505050565b60006020828403121561096d578081fd5b6109776020610cb8565b9135825250919050565b600060408284031215610992578081fd5b61099c6040610cb8565b82358152602083013560208201528091505092915050565b600081518084526109cc816020860160208601610cdf565b601f01601f19169290920160200192915050565b600082516109f2818460208701610cdf565b9190910192915050565b901515815260200190565b90815260200190565b600060208252610a2360208301846109b4565b9392505050565b6020808252602b908201527f486173686c6f636b5472616e736665723a204e4f4e5a45524f5f52454349504960408201526a454e545f42414c414e434560a81b606082015260800190565b60208082526022908201527f486173686c6f636b5472616e736665723a20494e56414c49445f505245494d41604082015261474560f01b606082015260800190565b60208082526025908201527f486173686c6f636b5472616e736665723a205a4552305f53454e4445525f42416040820152644c414e434560d81b606082015260800190565b60208082526022908201527f486173686c6f636b5472616e736665723a20455850495245445f54494d454c4f604082015261434b60f01b606082015260800190565b60208082526021908201527f486173686c6f636b5472616e736665723a205041594d454e545f4558504952456040820152601160fa1b606082015260800190565b6020808252818101527f486173686c6f636b5472616e736665723a20454d5054595f4c4f434b48415348604082015260600190565b815160808201908260005b6002811015610bde578251825260209283019290910190600101610bbf565b5050506020808401516040840160005b6002811015610c145782516001600160a01b031682529183019190830190600101610bee565b5050505092915050565b600060208252825160a06020840152610c3a60c08401826109b4565b905060018060a01b0360208501511660408401526040840151601f1980858403016060860152610c6a83836109b4565b92506060860151915080858403016080860152610c8783836109b4565b925060808601519150808584030160a086015250610ca582826109b4565b95945050505050565b9051815260200190565b60405181810167ffffffffffffffff81118282101715610cd757600080fd5b604052919050565b60005b83811015610cfa578181015183820152602001610ce2565b83811115610d09576000848401525b5050505056fe7475706c652862797465733332206c6f636b486173682c2075696e743235362065787069727929a2646970667358221220f7a1aad5efbe0de5a92ccb20170dbe8d594d5a4ccb943cb48fbcd3fcbc98e24c64736f6c63430007010033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638052474d1161005b5780638052474d146100bd5780638de8b77e146100c55780638ef98a7e146100cd57806394184ba9146100ed5761007d565b80630528aa1c14610082578063206162be146100a05780633722aff9146100b5575b600080fd5b61008a61010d565b6040516100979190610a10565b60405180910390f35b6100a8610141565b6040516100979190610c1e565b61008a61034d565b61008a610386565b61008a6103b2565b6100e06100db3660046107ae565b6103ce565b6040516100979190610bb4565b6101006100fb366004610745565b61050e565b60405161009791906109fc565b60606101176105da565b6000815260405161012c908290602001610cae565b60405160208183030381529060405291505090565b6101496105ec565b6040518060a00160405280306001600160a01b0316638052474d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561018d57600080fd5b505afa1580156101a1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101c99190810190610844565b8152602001306001600160a01b03168152602001306001600160a01b0316638de8b77e6040518163ffffffff1660e01b815260040160006040518083038186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102529190810190610844565b8152602001306001600160a01b0316633722aff96040518163ffffffff1660e01b815260040160006040518083038186803b15801561029057600080fd5b505afa1580156102a4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102cc9190810190610844565b8152602001306001600160a01b0316630528aa1c6040518163ffffffff1660e01b815260040160006040518083038186803b15801561030a57600080fd5b505afa15801561031e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103469190810190610844565b9052905090565b6040518060400160405280601781526020017f7475706c65286279746573333220707265496d6167652900000000000000000081525081565b6040518060400160405280601081526020016f2430b9b43637b1b5aa3930b739b332b960811b81525081565b604051806060016040528060278152602001610d106027913981565b6103d6610624565b6103de610649565b6103ea85870187610981565b90506103f46105da565b6104008486018661095c565b905061040a610624565b610416898b018b61087f565b82519091501561050157602083015115806104345750428360200151115b6104595760405162461bcd60e51b815260040161045090610b3e565b60405180910390fd5b6000600283600001516040516020016104729190610a07565b60408051601f198184030181529082905261048c916109e0565b602060405180830381855afa1580156104a9573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906104cc919061072d565b845190915081146104ef5760405162461bcd60e51b815260040161045090610a75565b50805180516020909101528051600090525b9998505050505050505050565b6000610518610649565b61052483850185610981565b905061052e610624565b61053a8688018861087f565b80515190915061055c5760405162461bcd60e51b815260040161045090610ab7565b8051602001511561057f5760405162461bcd60e51b815260040161045090610a2a565b815161059d5760405162461bcd60e51b815260040161045090610b7f565b602082015115806105b15750428260200151115b6105cd5760405162461bcd60e51b815260040161045090610afc565b5060019695505050505050565b60408051602081019091526000815290565b6040518060a001604052806060815260200160006001600160a01b031681526020016060815260200160608152602001606081525090565b6040518060400160405280610637610660565b8152602001610644610660565b905290565b604080518082019091526000808252602082015290565b60405180604001604052806002906020820280368337509192915050565b60008083601f84011261068f578182fd5b50813567ffffffffffffffff8111156106a6578182fd5b6020830191508360208285010111156106be57600080fd5b9250929050565b600082601f8301126106d5578081fd5b815167ffffffffffffffff8111156106eb578182fd5b6106fe601f8201601f1916602001610cb8565b915080825283602082850101111561071557600080fd5b610726816020840160208601610cdf565b5092915050565b60006020828403121561073e578081fd5b5051919050565b6000806000806040858703121561075a578283fd5b843567ffffffffffffffff80821115610771578485fd5b61077d8883890161067e565b90965094506020870135915080821115610795578384fd5b506107a28782880161067e565b95989497509550505050565b600080600080600080606087890312156107c6578182fd5b863567ffffffffffffffff808211156107dd578384fd5b6107e98a838b0161067e565b90985096506020890135915080821115610801578384fd5b61080d8a838b0161067e565b90965094506040890135915080821115610825578384fd5b5061083289828a0161067e565b979a9699509497509295939492505050565b600060208284031215610855578081fd5b815167ffffffffffffffff81111561086b578182fd5b610877848285016106c5565b949350505050565b600060808284031215610890578081fd5b61089a6040610cb8565b83601f8401126108a8578182fd5b6108b26040610cb8565b808460408601878111156108c4578586fd5b855b60028110156108e55782358552602094850194909201916001016108c6565b5082855287605f8801126108f7578586fd5b6109016040610cb8565b9350839250905060808601871015610917578485fd5b845b600281101561094d5781356001600160a01b0381168114610938578687fd5b84526020938401939190910190600101610919565b50506020830152509392505050565b60006020828403121561096d578081fd5b6109776020610cb8565b9135825250919050565b600060408284031215610992578081fd5b61099c6040610cb8565b82358152602083013560208201528091505092915050565b600081518084526109cc816020860160208601610cdf565b601f01601f19169290920160200192915050565b600082516109f2818460208701610cdf565b9190910192915050565b901515815260200190565b90815260200190565b600060208252610a2360208301846109b4565b9392505050565b6020808252602b908201527f486173686c6f636b5472616e736665723a204e4f4e5a45524f5f52454349504960408201526a454e545f42414c414e434560a81b606082015260800190565b60208082526022908201527f486173686c6f636b5472616e736665723a20494e56414c49445f505245494d41604082015261474560f01b606082015260800190565b60208082526025908201527f486173686c6f636b5472616e736665723a205a4552305f53454e4445525f42416040820152644c414e434560d81b606082015260800190565b60208082526022908201527f486173686c6f636b5472616e736665723a20455850495245445f54494d454c4f604082015261434b60f01b606082015260800190565b60208082526021908201527f486173686c6f636b5472616e736665723a205041594d454e545f4558504952456040820152601160fa1b606082015260800190565b6020808252818101527f486173686c6f636b5472616e736665723a20454d5054595f4c4f434b48415348604082015260600190565b815160808201908260005b6002811015610bde578251825260209283019290910190600101610bbf565b5050506020808401516040840160005b6002811015610c145782516001600160a01b031682529183019190830190600101610bee565b5050505092915050565b600060208252825160a06020840152610c3a60c08401826109b4565b905060018060a01b0360208501511660408401526040840151601f1980858403016060860152610c6a83836109b4565b92506060860151915080858403016080860152610c8783836109b4565b925060808601519150808584030160a086015250610ca582826109b4565b95945050505050565b9051815260200190565b60405181810167ffffffffffffffff81118282101715610cd757600080fd5b604052919050565b60005b83811015610cfa578181015183820152602001610ce2565b83811115610d09576000848401525b5050505056fe7475706c652862797465733332206c6f636b486173682c2075696e743235362065787069727929a2646970667358221220f7a1aad5efbe0de5a92ccb20170dbe8d594d5a4ccb943cb48fbcd3fcbc98e24c64736f6c63430007010033",
    "devdoc": {
        "author": "Connext <support@connext.network>",
        "kind": "dev",
        "methods": {},
        "title": "HashlockTransfer",
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "notice": "This contract allows users to claim a payment locked in         the application if they provide the correct preImage. The payment is         reverted if not unlocked by the timelock if one is provided.",
        "version": 1
    },
    "storageLayout": {
        "storage": [],
        "types": null
    }
}
