{
    "contractName": "ERC721MarginLoan",
    "abi": [
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_interfaceId",
                    "type": "bytes4"
                }
            ],
            "name": "supportsInterface",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "name",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "getApproved",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_to",
                    "type": "address"
                },
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "approve",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "name": "approvedManagers",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "DYDX_MARGIN",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "name": "owedTokensRepaidSinceLastWithdraw",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalSupply",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "InterfaceId_ERC165",
            "outputs": [
                {
                    "name": "",
                    "type": "bytes4"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_from",
                    "type": "address"
                },
                {
                    "name": "_to",
                    "type": "address"
                },
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "transferFrom",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_owner",
                    "type": "address"
                },
                {
                    "name": "_index",
                    "type": "uint256"
                }
            ],
            "name": "tokenOfOwnerByIndex",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_from",
                    "type": "address"
                },
                {
                    "name": "_to",
                    "type": "address"
                },
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "exists",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_index",
                    "type": "uint256"
                }
            ],
            "name": "tokenByIndex",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "ownerOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_owner",
                    "type": "address"
                }
            ],
            "name": "balanceOf",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "symbol",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_to",
                    "type": "address"
                },
                {
                    "name": "_approved",
                    "type": "bool"
                }
            ],
            "name": "setApprovalForAll",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "_from",
                    "type": "address"
                },
                {
                    "name": "_to",
                    "type": "address"
                },
                {
                    "name": "_tokenId",
                    "type": "uint256"
                },
                {
                    "name": "_data",
                    "type": "bytes"
                }
            ],
            "name": "safeTransferFrom",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "",
                    "type": "bytes32"
                }
            ],
            "name": "owedTokenAddress",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "tokenURI",
            "outputs": [
                {
                    "name": "",
                    "type": "string"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "_owner",
                    "type": "address"
                },
                {
                    "name": "_operator",
                    "type": "address"
                }
            ],
            "name": "isApprovedForAll",
            "outputs": [
                {
                    "name": "",
                    "type": "bool"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "name": "margin",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "name": "lender",
                    "type": "address"
                }
            ],
            "name": "LoanTokenized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "name": "lender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "ownershipSentTo",
                    "type": "address"
                }
            ],
            "name": "LoanUntokenized",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "lender",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "manager",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "isApproved",
                    "type": "bool"
                }
            ],
            "name": "ManagerApproval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "name": "lender",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "owedToken",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "owedTokenWithdrawn",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "name": "completelyRepaid",
                    "type": "bool"
                }
            ],
            "name": "OwedTokenWithdrawn",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "_from",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "_to",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "_owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "_approved",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "_tokenId",
                    "type": "uint256"
                }
            ],
            "name": "Approval",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "name": "_owner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "name": "_operator",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "name": "_approved",
                    "type": "bool"
                }
            ],
            "name": "ApprovalForAll",
            "type": "event"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "manager",
                    "type": "address"
                },
                {
                    "name": "isApproved",
                    "type": "bool"
                }
            ],
            "name": "approveManager",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "to",
                    "type": "address"
                }
            ],
            "name": "untokenizeLoan",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "positionIds",
                    "type": "bytes32[]"
                }
            ],
            "name": "withdrawMultiple",
            "outputs": [],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "withdraw",
            "outputs": [
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "from",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "receiveLoanOwnership",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "",
                    "type": "uint256"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "increaseLoanOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "caller",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "",
                    "type": "uint256"
                }
            ],
            "name": "marginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [
                {
                    "name": "canceler",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                }
            ],
            "name": "cancelMarginCallOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [
                {
                    "name": "recoverer",
                    "type": "address"
                },
                {
                    "name": "positionId",
                    "type": "bytes32"
                },
                {
                    "name": "recipient",
                    "type": "address"
                }
            ],
            "name": "forceRecoverCollateralOnBehalfOf",
            "outputs": [
                {
                    "name": "",
                    "type": "address"
                }
            ],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "bytecode": "0x608060405260016000553480156200001657600080fd5b5060405160208062002ea683398101604081815291518282018352601882527f6459645820455243373231204d617267696e204c6f616e7300000000000000006020808401919091528351808501909452600484527f642f4c4f000000000000000000000000000000000000000000000000000000009084015291829190620000c87f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001ed810204565b620000fc7f80ac58cd00000000000000000000000000000000000000000000000000000000640100000000620001ed810204565b620001307f4f558e7900000000000000000000000000000000000000000000000000000000640100000000620001ed810204565b8151620001459060069060208501906200025d565b5080516200015b9060079060208401906200025d565b50620001907f780e9d6300000000000000000000000000000000000000000000000000000000640100000000620001ed810204565b620001c47f5b5e139f00000000000000000000000000000000000000000000000000000000640100000000620001ed810204565b5050600d8054600160a060020a031916600160a060020a03929092169190911790555062000302565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200021d57600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002a057805160ff1916838001178555620002d0565b82800160010185558215620002d0579182015b82811115620002d0578251825591602001919060010190620002b3565b50620002de929150620002e2565b5090565b620002ff91905b80821115620002de5760008155600101620002e9565b90565b612b9480620003126000396000f30060806040526004361061018a5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a7811461018f57806306fdde03146101dd578063081812fc14610267578063095ea7b3146102a85780630cf7d564146102db5780630dda60cc1461030f578063130c3c9e1461032457806314dfbc271461034457806318160ddd1461036e57806319fa8f501461038357806323b872dd146103cd5780632f745c59146104045780634120bcec1461043557806342842e0e1461046d5780634f558e79146104a45780634f6ccce7146104bc578063501b0b18146104d45780635451fb2614610505578063597a65811461053c5780636352211e1461056d57806370a082311461058557806383253cfa146105b35780638e19899e146105e457806395d89b41146105fc5780639ab2d0c714610611578063a22cb46514610644578063abdd0c4414610677578063b88d4fde146106ab578063c3a4de3b14610727578063c87b56dd1461073f578063e985e9c514610757575b600080fd5b34801561019b57600080fd5b506101c97fffffffff000000000000000000000000000000000000000000000000000000006004351661078b565b604080519115158252519081900360200190f35b3480156101e957600080fd5b506101f26107c2565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027f600435610859565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102b457600080fd5b506102d973ffffffffffffffffffffffffffffffffffffffff60043516602435610881565b005b3480156102e757600080fd5b506101c973ffffffffffffffffffffffffffffffffffffffff60043581169060243516610969565b34801561031b57600080fd5b5061027f610989565b34801561033057600080fd5b506102d960048035602481019101356109a5565b34801561035057600080fd5b5061035c600435610a59565b60408051918252519081900360200190f35b34801561037a57600080fd5b5061035c610a6b565b34801561038f57600080fd5b50610398610a71565b604080517fffffffff000000000000000000000000000000000000000000000000000000009092168252519081900360200190f35b3480156103d957600080fd5b506102d973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610a95565b34801561041057600080fd5b5061035c73ffffffffffffffffffffffffffffffffffffffff60043516602435610b6c565b34801561044157600080fd5b5061027f73ffffffffffffffffffffffffffffffffffffffff6004358116906024359060443516610bc6565b34801561047957600080fd5b506102d973ffffffffffffffffffffffffffffffffffffffff60043581169060243516604435610d09565b3480156104b057600080fd5b506101c9600435610d2a565b3480156104c857600080fd5b5061035c600435610d5a565b3480156104e057600080fd5b5061027f73ffffffffffffffffffffffffffffffffffffffff60043516602435610d8f565b34801561051157600080fd5b5061027f73ffffffffffffffffffffffffffffffffffffffff600435166024356044356064356110a1565b34801561054857600080fd5b506102d960043573ffffffffffffffffffffffffffffffffffffffff6024351661116a565b34801561057957600080fd5b5061027f6004356114fd565b34801561059157600080fd5b5061035c73ffffffffffffffffffffffffffffffffffffffff60043516611534565b3480156105bf57600080fd5b5061027f73ffffffffffffffffffffffffffffffffffffffff60043516602435611581565b3480156105f057600080fd5b5061035c60043561168c565b34801561060857600080fd5b506101f2611711565b34801561061d57600080fd5b506102d973ffffffffffffffffffffffffffffffffffffffff600435166024351515611772565b34801561065057600080fd5b506102d973ffffffffffffffffffffffffffffffffffffffff600435166024351515611972565b34801561068357600080fd5b5061027f73ffffffffffffffffffffffffffffffffffffffff60043516602435604435611a2e565b3480156106b757600080fd5b50604080516020601f6064356004818101359283018490048402850184019095528184526102d99473ffffffffffffffffffffffffffffffffffffffff8135811695602480359092169560443595369560849401918190840183828082843750949750611b2e9650505050505050565b34801561073357600080fd5b5061027f600435611b50565b34801561074b57600080fd5b506101f2600435611b78565b34801561076357600080fd5b506101c973ffffffffffffffffffffffffffffffffffffffff60043581169060243516611c2d565b7fffffffff000000000000000000000000000000000000000000000000000000001660009081526001602052604090205460ff1690565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b505050505090505b90565b60009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061088c826114fd565b905073ffffffffffffffffffffffffffffffffffffffff83811690821614156108b457600080fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806108dd57506108dd8133611c2d565b15156108e857600080fd5b60008281526003602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600e60209081526000928352604080842090915290825290205460ff1681565b600d5473ffffffffffffffffffffffffffffffffffffffff1681565b600080546001018082555b828210156109e3576109d78484848181106109c757fe5b9050602002013560001916611c68565b506001909101906109b0565b6000548114610a5357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b50505050565b600f6020526000908152604090205481565b600a5490565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b610a9f3382611eb3565b1515610aaa57600080fd5b73ffffffffffffffffffffffffffffffffffffffff83161515610acc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82161515610aee57600080fd5b610af88382611f46565b610b028382611fe9565b610b0c8282612131565b808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000610b7783611534565b8210610b8257600080fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260409020805483908110610bb357fe5b9060005260206000200154905092915050565b600d54600090819073ffffffffffffffffffffffffffffffffffffffff163314610c7757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b610c8084612187565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60209081526040808320938a168352929052205490915060ff168015610cf057508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610cfd57309150610d01565b8091505b509392505050565b610d258383836020604051908101604052806000815250611b2e565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16801515905b50919050565b6000610d64610a6b565b8210610d6f57600080fd5b600a805483908110610d7d57fe5b90600052602060002001549050919050565b600d54600090819073ffffffffffffffffffffffffffffffffffffffff163314610e4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000805460010190819055610e558585612285565b600d54604080517fbb39c85f00000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff9092169163bb39c85f91602480820192602092909190829003018186803b158015610ec757600080fd5b505afa158015610edb573d6000803e3d6000fd5b505050506040513d6020811015610ef157600080fd5b505191506000821115610f10576000848152600f602052604090208290555b600d54604080517f655c737c00000000000000000000000000000000000000000000000000000000815260048101879052905173ffffffffffffffffffffffffffffffffffffffff9092169163655c737c91602480820192602092909190829003018186803b158015610f8257600080fd5b505afa158015610f96573d6000803e3d6000fd5b505050506040513d6020811015610fac57600080fd5b505160008581526010602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055519187169186917f5ec3c02a8b815037ffe7e27fa33c505128668b142887933343f24b141e3abc3b91a3309250600054811461109957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b505092915050565b600d54600090819073ffffffffffffffffffffffffffffffffffffffff16331461115257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b61115b85612187565b90508091505b50949350505050565b600080546001018082558391908190611182846114fd565b92503373ffffffffffffffffffffffffffffffffffffffff84161461122e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f4552433732314d617267696e4c6f616e23756e746f6b656e697a654c6f616e3a60448201527f204f6e6c7920746f6b656e206f776e65722063616e2063616c6c000000000000606482015290519081900360840190fd5b600d54604080517fbb39c85f00000000000000000000000000000000000000000000000000000000815260048101899052905173ffffffffffffffffffffffffffffffffffffffff9092169163bb39c85f91602480820192602092909190829003018186803b1580156112a057600080fd5b505afa1580156112b4573d6000803e3d6000fd5b505050506040513d60208110156112ca57600080fd5b50516000878152600f6020526040902054909250821461139757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605660248201527f4552433732314d617267696e4c6f616e23756e746f6b656e697a654c6f616e3a60448201527f20416c6c206f776564546f6b656e206d7573742062652077697468647261776e60648201527f206265666f726520756e746f6b656e697a6174696f6e00000000000000000000608482015290519081900360a40190fd5b6113a183876122d4565b600d54604080517f2d7af0f40000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff888116602483015291519190921691632d7af0f491604480830192600092919082900301818387803b15801561141c57600080fd5b505af1158015611430573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8981168252915191871693508992507f4aa96155479ad1aeaa811c0fa7d819dc7e43885e7de7dac336af1b82c2d2de34919081900360200190a360005481146114f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b505050505050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680151561152e57600080fd5b92915050565b600073ffffffffffffffffffffffffffffffffffffffff8216151561155857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205490565b600d54600090819073ffffffffffffffffffffffffffffffffffffffff16331461163257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b61163b83612187565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e602090815260408083209389168352929052205490915060ff161561168157309150611685565b8091505b5092915050565b6000805460010180825561169f83611c68565b91506000548114610d5457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561084e5780601f106108235761010080835404028352916020019161084e565b600080546001019081905573ffffffffffffffffffffffffffffffffffffffff831633141561182857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f4552433732314d617267696e4c6f616e23617070726f76654d616e616765723a60448201527f2043616e6e6f7420617070726f76652073656c66000000000000000000000000606482015290519081900360840190fd5b336000908152600e6020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205460ff161515821515141561186c57611902565b336000818152600e6020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016871515908117909155815190815290519293927fe41625c4c3305c982f69719ce2edfc7f372d126b5bfdd5029cea4619cb5a1023929181900390910190a35b6000548114610d2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f5265656e7472616e637920636865636b206661696c7572650000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821633141561199557600080fd5b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b600d54600090819073ffffffffffffffffffffffffffffffffffffffff163314611adf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4f6e6c794d617267696e236f6e6c794d617267696e3a204f6e6c79204d61726760448201527f696e2063616e2063616c6c000000000000000000000000000000000000000000606482015290519081900360840190fd5b611ae884612187565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600e60209081526040808320938a168352929052205490915060ff1615610cfd57309150610d01565b611b39848484610a95565b611b4584848484612320565b1515610a5357600080fd5b60106020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6060611b8382610d2a565b1515611b8e57600080fd5b6000828152600c602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015611c215780601f10611bf657610100808354040283529160200191611c21565b820191906000526020600020905b815481529060010190602001808311611c0457829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b600080600080600080611c7a87612187565b60008881526010602090815260409182902054600d5483517fbb39c85f000000000000000000000000000000000000000000000000000000008152600481018d9052935194995073ffffffffffffffffffffffffffffffffffffffff9182169850169263bb39c85f926024808201939291829003018186803b158015611cff57600080fd5b505afa158015611d13573d6000803e3d6000fd5b505050506040513d6020811015611d2957600080fd5b50516000888152600f6020526040902054909350611d4e90849063ffffffff6124ba16565b9150811515611d605760009550611ea9565b50600d54604080517f640075f300000000000000000000000000000000000000000000000000000000815260048101899052905160009273ffffffffffffffffffffffffffffffffffffffff169163640075f3916024808301926020929190829003018186803b158015611dd357600080fd5b505afa158015611de7573d6000803e3d6000fd5b505050506040513d6020811015611dfd57600080fd5b505115611e1657611e0e85886122d4565b506001611e28565b6000878152600f602052604090208390555b81611e3385306124cc565b1015611e3b57fe5b611e4684868461259a565b6040805173ffffffffffffffffffffffffffffffffffffffff8681168252602082018590528315158284015291519187169189917f28a44e48b937936165d7c6253784b24c4f5f373cdca113cb4aa9300870f240dd919081900360600190a38195505b5050505050919050565b600080611ebf836114fd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611f2e57508373ffffffffffffffffffffffffffffffffffffffff16611f1684610859565b73ffffffffffffffffffffffffffffffffffffffff16145b80611f3e5750611f3e8185611c2d565b949350505050565b8173ffffffffffffffffffffffffffffffffffffffff16611f66826114fd565b73ffffffffffffffffffffffffffffffffffffffff1614611f8657600080fd5b60008181526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611fe557600081815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b5050565b6000806000611ff88585612733565b60008481526009602090815260408083205473ffffffffffffffffffffffffffffffffffffffff8916845260089092529091205490935061204090600163ffffffff6124ba16565b73ffffffffffffffffffffffffffffffffffffffff861660009081526008602052604090208054919350908390811061207557fe5b9060005260206000200154905080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156120cf57fe5b600091825260208083209091019290925573ffffffffffffffffffffffffffffffffffffffff87168152600890915260409020805490612113906000198301612ae3565b50600093845260096020526040808520859055908452909220555050565b600061213d8383612808565b5073ffffffffffffffffffffffffffffffffffffffff9091166000908152600860209081526040808320805460018101825590845282842081018590559383526009909152902055565b600080612193836114fd565b905073ffffffffffffffffffffffffffffffffffffffff811615156121b457fe5b73ffffffffffffffffffffffffffffffffffffffff811630141561152e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604560248201527f4552433732314d617267696e4c6f616e236f776e65724f66506f736974696f6e60448201527f3a207468697320636f6e74726163742073686f756c64206e6f74206f776e207460648201527f6f6b656e73000000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b61228f82826128cb565b600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015550565b6000818152600f602090815260408083208390556010909152902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905580610d258382612940565b6000806123428573ffffffffffffffffffffffffffffffffffffffff16612a3a565b15156123515760019150611161565b6040517f150b7a02000000000000000000000000000000000000000000000000000000008152336004820181815273ffffffffffffffffffffffffffffffffffffffff898116602485015260448401889052608060648501908152875160848601528751918a169463150b7a0294938c938b938b93909160a490910190602085019080838360005b838110156123f15781810151838201526020016123d9565b50505050905090810190601f16801561241e5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561244057600080fd5b505af1158015612454573d6000803e3d6000fd5b505050506040513d602081101561246a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149695505050505050565b6000828211156124c657fe5b50900390565b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561256757600080fd5b505afa15801561257b573d6000803e3d6000fd5b505050506040513d602081101561259157600080fd5b50519392505050565b308115806125d357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156125dd57610a53565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561268057600080fd5b505af1158015612694573d6000803e3d6000fd5b505050506126a0612a42565b1515610a5357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f546f6b656e496e746572616374237472616e736665723a205472616e7366657260448201527f206661696c656400000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8173ffffffffffffffffffffffffffffffffffffffff16612753826114fd565b73ffffffffffffffffffffffffffffffffffffffff161461277357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600460205260409020546127aa90600163ffffffff6124ba16565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526004602090815260408083209490945591815260029091522080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff161561283757600080fd5b600081815260026020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87169081179091558352600490915290205461289e906001612a79565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526004602052604090209190915550565b73ffffffffffffffffffffffffffffffffffffffff821615156128ed57600080fd5b6128f78282612131565b604051819073ffffffffffffffffffffffffffffffffffffffff8416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600080600061294f8585612a86565b6000848152600c6020526040902054600260001961010060018416150201909116041561298d576000848152600c6020526040812061298d91612b07565b6000848152600b6020526040902054600a549093506129b390600163ffffffff6124ba16565b9150600a828154811015156129c457fe5b9060005260206000200154905080600a848154811015156129e157fe5b6000918252602082200191909155600a8054849081106129fd57fe5b600091825260209091200155600a805490612a1c906000198301612ae3565b506000938452600b6020526040808520859055908452909220555050565b6000903b1190565b6000803d8015612a595760208114612a6257612a6e565b60019150612a6e565b60206000803e60005191505b5080151591505b5090565b8181018281101561152e57fe5b612a908282611f46565b612a9a8282611fe9565b604051819060009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b815481835581811115610d2557600083815260209020610d25918101908301612b4e565b50805460018160011615610100020316600290046000825580601f10612b2d5750612b4b565b601f016020900490600052602060002090810190612b4b9190612b4e565b50565b61085691905b80821115612a755760008155600101612b545600a165627a7a72305820739f4c3bd922610c6714ac0e0a52b87437a6047d0382eec5ecf9f549501b249f0029",
    "networks": {},
    "schemaVersion": "2.0.1"
}