{
    "contractName": "MarginIssueManager",
    "abi": [
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "previousOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnershipTransferred",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "financing",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "dividend",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "commission",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "settlementTime",
                    "type": "uint256"
                }
            ],
            "name": "PnLSettled",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "poolId",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "name": "closures",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "action",
                    "type": "bytes32"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "user",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "int256",
                    "name": "balance",
                    "type": "int256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "offerTime",
                    "type": "uint256"
                }
            ],
            "name": "collateral",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "platform",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "collection",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "name": "feecollection",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "party",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "counterparty",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "securityTraded",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "securityAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "currencySettled",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "cashAmount",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "orderRef",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "name": "subscribers",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "bytes32",
                    "name": "poolid",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "transferor",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "transferee",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "unitsToTransfer",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "amountPaid",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "cref",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "bytes32",
                    "name": "ref",
                    "type": "bytes32"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "fee",
                    "type": "uint256"
                },
                {
                    "indexed": false,
                    "internalType": "uint256",
                    "name": "timestamp",
                    "type": "uint256"
                }
            ],
            "name": "tradeSettled",
            "type": "event"
        },
        {
            "inputs": [],
            "name": "owner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [],
            "name": "renounceOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "transferOwnership",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "poolFactory",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "vault",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "securityFactory",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "distribution",
                    "type": "address"
                }
            ],
            "name": "initialize",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "bridge",
                    "type": "address"
                }
            ],
            "name": "setBridge",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "poolId",
                    "type": "bytes32"
                }
            ],
            "name": "getPool",
            "outputs": [
                {
                    "internalType": "bool",
                    "name": "",
                    "type": "bool"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "securityType",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "cficode",
                    "type": "bytes32"
                },
                {
                    "internalType": "uint256",
                    "name": "securityAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "minimumOrderSize",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "cashAmount",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "margin",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "collateralAmnt",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "tradeFee",
                    "type": "uint256"
                }
            ],
            "name": "issueProduct",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                }
            ],
            "name": "close",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "cashToken",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                }
            ],
            "name": "offerCollateral",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "cashToken",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                }
            ],
            "name": "sendCollateral",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "poolId",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                }
            ],
            "name": "getCollateral",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "party",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                }
            ],
            "name": "getUserCollateral",
            "outputs": [
                {
                    "internalType": "int256",
                    "name": "",
                    "type": "int256"
                }
            ],
            "stateMutability": "view",
            "type": "function",
            "constant": true
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "party",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "counterparty",
                    "type": "address"
                },
                {
                    "internalType": "bytes32",
                    "name": "orderRef",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "securityTraded",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "cashTraded",
                    "type": "uint256"
                }
            ],
            "name": "onMatch",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "bytes32",
                    "name": "ref",
                    "type": "bytes32"
                },
                {
                    "internalType": "bytes32",
                    "name": "cref",
                    "type": "bytes32"
                },
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "securityTraded",
                    "type": "uint256"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "currencyTraded",
                    "type": "uint256"
                },
                {
                    "internalType": "uint256",
                    "name": "executionTime",
                    "type": "uint256"
                }
            ],
            "name": "onTrade",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "internalType": "int256",
                    "name": "financingBidPerSec",
                    "type": "int256"
                },
                {
                    "internalType": "int256",
                    "name": "financingOfferPerSec",
                    "type": "int256"
                },
                {
                    "internalType": "int256",
                    "name": "dividendBidPerSec",
                    "type": "int256"
                },
                {
                    "internalType": "int256",
                    "name": "dividendOfferPerSec",
                    "type": "int256"
                },
                {
                    "internalType": "int256",
                    "name": "swapLong",
                    "type": "int256"
                },
                {
                    "internalType": "int256",
                    "name": "swapShort",
                    "type": "int256"
                },
                {
                    "internalType": "uint256",
                    "name": "settlementTime",
                    "type": "uint256"
                }
            ],
            "name": "onSettle",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "security",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "currency",
                    "type": "address"
                },
                {
                    "internalType": "uint256",
                    "name": "amount",
                    "type": "uint256"
                }
            ],
            "name": "withdraw",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "_token",
                    "type": "address"
                }
            ],
            "name": "getTradingFeeCollected",
            "outputs": [
                {
                    "internalType": "uint256",
                    "name": "",
                    "type": "uint256"
                }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.1+commit.f4a555be\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"financing\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"dividend\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"commission\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"settlementTime\",\"type\":\"uint256\"}],\"name\":\"PnLSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"closures\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"action\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"balance\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offerTime\",\"type\":\"uint256\"}],\"name\":\"collateral\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"platform\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"collection\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"feecollection\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"party\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"securityTraded\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"securityAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currencySettled\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"cashAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderRef\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"subscribers\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"poolid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transferor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"transferee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unitsToTransfer\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"cref\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"ref\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"tradeSettled\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"close\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"getCollateral\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"poolId\",\"type\":\"bytes32\"}],\"name\":\"getPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"getTradingFeeCollected\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"party\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"getUserCollateral\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"poolFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"vault\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"securityFactory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"distribution\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"securityType\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"cficode\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"securityAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minimumOrderSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"margin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmnt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tradeFee\",\"type\":\"uint256\"}],\"name\":\"issueProduct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"cashToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"}],\"name\":\"offerCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"party\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"counterparty\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"orderRef\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"securityTraded\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"cashTraded\",\"type\":\"uint256\"}],\"name\":\"onMatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"financingBidPerSec\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"financingOfferPerSec\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dividendBidPerSec\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"dividendOfferPerSec\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"swapLong\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"swapShort\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"settlementTime\",\"type\":\"uint256\"}],\"name\":\"onSettle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"ref\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"cref\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"securityTraded\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currencyTraded\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"executionTime\",\"type\":\"uint256\"}],\"name\":\"onTrade\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"cashToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"}],\"name\":\"sendCollateral\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"security\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/MarginIssueManager.sol\":\"MarginIssueManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@balancer-labs/v2-solidity-utils/contracts/helpers/BalancerErrors.sol\":{\"keccak256\":\"0x14f18d0c0051d5412a250536a9850f2698fe1ede9e4760d94142762a039f053b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://21535a4a50a1f1acf80c543b1e44fc80671787a0364c1e3f0437e7c499f15258\",\"dweb:/ipfs/QmR9EMgjmdQRJHFrmD2Tjb9BqN2rNgvi6je5yh71oxebav\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/ISignaturesValidator.sol\":{\"keccak256\":\"0x2fe46b13b7c8bfc6f5c539c0b73d6325813f383f551b71fb6bca8dafd06964e1\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8e651ae7a3a3652c8bb7aaa42c2cce5924310df62a923d9ec50ddb9c850d2995\",\"dweb:/ipfs/QmTHz9y18L5FD7v9GcvxGWSLJuin2KCUEYoARTgz8njce8\"]},\"@balancer-labs/v2-solidity-utils/contracts/helpers/ITemporarilyPausable.sol\":{\"keccak256\":\"0xb3e5b7c63f80b80ef3f0138eac56c397a439bf6b667fc06d5061aa869828b562\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://978d66fba0721a1a67e29a32eaddab8d1f92ab2fb2d611724ea8d0d3c9b0e95b\",\"dweb:/ipfs/QmfG4foZvx3NDZao7d4VvGzL4Uxtk8VWNJXvgo9fiAJxZv\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\":{\"keccak256\":\"0x38720507bb6c838df83953d1ffa88b97d0e06baefa0e3e387303cb8a090a49f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://fd74d7d2f8881dcc5a3aa4ce732f84b2cbb15de117e1fc4735a3d58a4062524a\",\"dweb:/ipfs/QmSYxuM8HhMn3oPxZ66PbukDikGPkHs3FLD7miFbky2EfW\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/LogExpMath.sol\":{\"keccak256\":\"0x66c6a4efc58bcc18d11fdc3236ec53f6044944918e86116f3aa3deee1daac8ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5deeae731108f0d2fed1ae8c6bcb2796b5a93f6c260019306d175bd3baa2988\",\"dweb:/ipfs/QmexvLdJbGMSrmaAVrZDaHVfCaAzQpV2ZybQMnfX4zXsPU\"]},\"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\":{\"keccak256\":\"0xb665c41c5d079058a53d3041d464ca5b6cac21de6a1e9ec514185c85eff2c5fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43c8834672f4fb25263aa8bed735fe6f4cd41d3ccbacfb519dd986a09136ae3f\",\"dweb:/ipfs/QmWiQXi9jiPWAbcBkxA99qfjv1Qx3R1tgZmgbeSsp7j42m\"]},\"@balancer-labs/v2-solidity-utils/contracts/misc/IWETH.sol\":{\"keccak256\":\"0x19a0628bedbe48178a4c90509a40d750d5039677b964ec533a24361a8d97274b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://c55887c89f152f00e5d65389061de28fada0e73eb5f41ebd16a3b8e65846cb1a\",\"dweb:/ipfs/QmNbVtaA44BGvKnKiCT4bEtjZu1ZD5ZJ6XrgBDh5qVEGcP\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\":{\"keccak256\":\"0x4bd56e87f0041ba666a540160962cd9f1eed11164a9a91af180550d69da4c8bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f43b33f08fe77242331b6209b35cf4f40ab38b9a6adae52adbd156603fc7b004\",\"dweb:/ipfs/QmQDr8qkAwrY5yuVizRbeMnNmaJGoVz8fqEdyKeSi7Z8eU\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol\":{\"keccak256\":\"0xd828a935a72a6d182912abba290e4debb8c684c36fd756088f7acb30e0b2bb76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e6ac013b95e9622917c5ad388dc73f0a389a76341597731746e54547aa9de8a\",\"dweb:/ipfs/QmPB8qWcRPZaDsASgQpf5a6i2YrZ4TDV3Ebi25Mn9EAdf4\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol\":{\"keccak256\":\"0x53e476d8641ec8d7502efcfaa666981c22fced87c553cf8bb206790af68798c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3eb7bbe7b8706130bd7c646766bec6d8ffb5792c20aac3b127f2a09aee9d8bc4\",\"dweb:/ipfs/QmcQdUBz6AozKU4rvBYLbZqcKy85fXPkKnhCbnthQi9k61\"]},\"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/SafeMath.sol\":{\"keccak256\":\"0xafe0542eb14932a66ce6280fbe9991130ead5bbcb7836d0a822fc4a59810c100\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://140c69f688c58bbf08f7b1b6f76dd89d72f9c84a3aab8ad1194679ee0acaa6e6\",\"dweb:/ipfs/QmUCub3NpdGK1U4xjSwsCHNZnRokcM9NMhRtC2kLefYef8\"]},\"@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol\":{\"keccak256\":\"0x70ecf1d48c285d78718bd2e159345677038ed8a81c74444bedd6a5c61af9aff6\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://8c7c210e449ea5d284abeaaed82e3bb3c203b57d8b3e5dfb6daedf76eaae31d1\",\"dweb:/ipfs/QmfJWLPhCG6PcHNJMLNDbAM6nd2ZVFCexCXvJ9qQmRaNbn\"]},\"@balancer-labs/v2-vault/contracts/interfaces/IAuthorizer.sol\":{\"keccak256\":\"0x792871e208bba1dad291f8d1cffad86f4afa5e2360816bd9c43481f7297155f5\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://af8ab65258e294c8ba0a5feee91208789f641181d225364b02123d38d9eec7d0\",\"dweb:/ipfs/Qmb5HUXRaSrHJafwK1H8XRjcCTnAZMShTvBNhr1ovA1j2m\"]},\"@balancer-labs/v2-vault/contracts/interfaces/IFlashLoanRecipient.sol\":{\"keccak256\":\"0x5ceb7a9b209c01659b25898622a2415414e12a7200559e57283fd511fe96c92a\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://35a6ee6cb389f2675c1b64f9813862d3503524ee05067ba88172c9298d4f5e3c\",\"dweb:/ipfs/QmZGPUaoKfRigdo2U9U3695j9wX97GRSzgiK8c6zhVjjFY\"]},\"@balancer-labs/v2-vault/contracts/interfaces/IProtocolFeesCollector.sol\":{\"keccak256\":\"0xacad6dfbdf2395aeb8b793b3cb5d9ee2702d8d5f667084ff7bfa248f64700f47\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b8a27ce7efd29cb653529a2e2c6a828f5bd973b286dc166d12a8f81426bca68a\",\"dweb:/ipfs/QmPFuddzXwjK58qDG4z1n9S9Yff865yCToAStRbdfWMo1D\"]},\"@balancer-labs/v2-vault/contracts/interfaces/IVault.sol\":{\"keccak256\":\"0x8a0904cb11d6571fdc0051b2de6b675d0e1cf8af45c1a5467d047812f1086223\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://e428d19d1bd18504c5c8a797b0a80515072f4d7fc278df73b9fec0ab8efe155d\",\"dweb:/ipfs/QmYeJPPQKAckBVvuhU9XXiZR4aSrVNu3WcfTmSsXJJYey3\"]},\"project:/contracts/MarginIssueManager.sol\":{\"keccak256\":\"0xfdd0f211f820d8f8e96b662580e21f5f6ed0060b8ed765f48771657ff3396ead\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://3e5f7be324e3ba31493515d9b2a74728e5078a14eb5f873c44827a9ebc4addcc\",\"dweb:/ipfs/QmWoS7nEcxeY4AHBouRPmPVBsZA1SsNpyXnWRD7HgEAFZo\"]},\"project:/contracts/interfaces/IFactory.sol\":{\"keccak256\":\"0x441c3a2cf365fae2c81f6bf8990efd6406bc20ece65372a83418181ce0008766\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12173165996b7a28c02cc3ca333e7b7371ffa96b07507ad98827a102db64d854\",\"dweb:/ipfs/QmXL1KhBX7GEYqE5sU2Bpeum7MwdoXzjKdQ8Noiq6PwMtt\"]},\"project:/contracts/interfaces/IMarginManager.sol\":{\"keccak256\":\"0xdadfc3091a403c3eb07cc9a7f1bb2496fadeea0866f484258e15ab11a3a5a69d\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://f391a9ec8f4d982a8fe1ddf552bce6ef94e82ce986eb1b0e95a14eb8ff8bc0b7\",\"dweb:/ipfs/QmS8tK6wLbeicBwmaTKCmjKUKqX5yZhPaeSPGnJPbxGbZN\"]},\"project:/contracts/interfaces/IMarginOrder.sol\":{\"keccak256\":\"0x47066cf8d64fda623f4f150dfea9d7e5ee92a468bdc29b22b5fa8f03a805c889\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://ee189467bf6678fe99bdbbdf8943f56b8497154b4465b1d6d4fa11ae535ff892\",\"dweb:/ipfs/QmNZFzosb7n3fmSgf9cH9QHnd6xUq49xkGsmnjR3UjkfEL\"]},\"project:/contracts/interfaces/IMarginTradingPool.sol\":{\"keccak256\":\"0x835f9ad44e3808f7c240a341b8b16f0ffc7c4701d8d666596fc421fe5bb8f513\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ede2506e6c9c9bb19f0a3375381073b01db4123bfd37d389ffa476ba05fd3169\",\"dweb:/ipfs/QmVF7xb1PQU2RzYzZkoFhcYhYqZrJ9srumuGPDZ8S2Hacr\"]},\"project:/contracts/interfaces/IMarginTradingPoolFactory.sol\":{\"keccak256\":\"0xc0bf9092eddf6c7806fe2aa473ad0289e3ce7ba2b065e437a6e9807cd1e7786c\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://f1924b2525b395c6062fc24945b763d1794c2a4fac92ade16bc2414792d2910f\",\"dweb:/ipfs/QmfQ37sP3APZEAGn84wxiFmLcy5rJzngmcbN3WVa51LHcs\"]},\"project:/contracts/interfaces/ISecurity.sol\":{\"keccak256\":\"0xc1682b23224bb0ecd24a4b3012d66518be83b4889fc77d72d1349c6e89edf597\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e02d526937045d1b94ea1de574a858c40440f2680a890a026e4c21de553fe3df\",\"dweb:/ipfs/QmdAFt9bHaa22hTDmrApWFLqUodF1jMDoDMLrrJfwodF3v\"]},\"project:/contracts/interfaces/ITrade.sol\":{\"keccak256\":\"0x2707ef79c6014bd3ea82469a2a580a7f51bde16e4097c2155d692d193b5baa4b\",\"license\":\"BUSL1.1\",\"urls\":[\"bzz-raw://e35deaa7f7c22555d5ccca9f8871029900c89586792d5f6d4cb852187568dae2\",\"dweb:/ipfs/QmeVm1k5e3mn7yxnudfFWH8YUuBPavaJbSokoCKYF95kLJ\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36147d68061005f6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063719dcf4a116100a2578063a55e866811610071578063a55e866814610203578063d9caed1214610216578063f2fde38b14610229578063f6c009271461023c578063f8c8765e1461025c5761010b565b8063719dcf4a146101b55780638da5cb5b146101c85780638dd14802146101dd57806397db1a92146101f05761010b565b806359e7e4b1116100de57806359e7e4b1146101745780636b0fd140146101875780636f943a091461019a578063715018a6146101ad5761010b565b806320f55dfe146101105780632b06b510146101255780632d91674614610138578063541af9d814610161575b600080fd5b61012361011e366004613de1565b61026f565b005b610123610133366004613d67565b61057f565b61014b610146366004613c9c565b610b03565b60405161015891906143f8565b60405180910390f35b61012361016f366004613e95565b610c38565b610123610182366004613f15565b611056565b610123610195366004614096565b611254565b61014b6101a8366004614072565b6119b5565b6101236119dd565b6101236101c3366004613cd4565b611a45565b6101d0611f00565b60405161015891906142c6565b6101236101eb366004613c9c565b611f0f565b6101236101fe366004613f15565b611f3d565b61014b610211366004613cd4565b612122565b610123610224366004613e55565b61214d565b610123610237366004613c9c565b6129b4565b61024f61024a366004614042565b612a32565b60405161015891906143ed565b61012361026a366004613d0c565b612a5e565b6004805460405163e0a87de160e01b815233928c926000926001600160a01b039091169163e0a87de1916102a5918691016142c6565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190613cb8565b9050826001600160a01b0316816001600160a01b0316146103315760405162461bcd60e51b815260040161032890614531565b60405180910390fd5b60005b600e60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020805490508110156105705761038f613b17565b600e60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002082815481106103e257fe5b90600052602060002090600702016040518060e00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090506000600a600083600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205413156104fa576104fa81600001518f8f8e8d8d8c8860c00151612ac6565b6000600a600083602001516001600160a01b03166001600160a01b0316815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205413156105675761056781602001518f8f8f8e8c8c8860c00151612dca565b50600101610334565b50505050505050505050505050565b60095433906001600160a01b031681146105ab5760405162461bcd60e51b815260040161032890614505565b6105b3613b69565b6001600160a01b038087166000908152600560209081526040808320888516845282529182902054825163ab63c60760e01b8152925193169263ab63c607926004808201939291829003018186803b15801561060e57600080fd5b505afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190613cb8565b6001600160a01b0316635778472a886040518263ffffffff1660e01b815260040161067191906143f8565b60a06040518083038186803b15801561068957600080fd5b505afa15801561069d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c191906140fd565b6001600160a01b03808816600090815260056020908152604080832089851684528252808320548151631288bdb960e11b8152915195965092946107cb94610766948a949116926325117b729260048083019392829003018186803b15801561072957600080fd5b505afa15801561073d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610761919061405a565b612fdc565b6001600160a01b03808a1660009081526005602090815260408083208b85168452825291829020548251635c1548fb60e01b815292516107c6948b94921692635c1548fb9260048082019391829003018186803b15801561072957600080fd5b613012565b90506107d9828b878461302b565b15610af757866001600160a01b03167f4f21132feec602e5e9588b602a7ede709b68eed293452dd8745c2c80cb3c3f118b8b8989898e426040516108239796959493929190614390565b60405180910390a2846001600160a01b031682600001516001600160a01b03161480156108655750896001600160a01b031682606001516001600160a01b0316145b156108ee576001600160a01b03808b166000908152600a602090815260408083209389168352929052205461089a9082613093565b6001600160a01b038b81166000818152600a60209081526040808320948b16835293905282902083905590519091600080516020614781833981519152916108e59189914290614601565b60405180910390a25b600080866001600160a01b031684600001516001600160a01b0316141561091957508a90508961093d565b886001600160a01b031684600001516001600160a01b0316141561093d57508990508a5b610945613b17565b6040518060e00160405280846001600160a01b03168152602001836001600160a01b031681526020018a81526020018881526020018c815260200185815260200160008152509050600e60008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002081908060018154018082558091505060019003906000526020600020906007020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015550506001600e60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000208054905003601060008d8152602001908152602001600020819055505050505b50505050505050505050565b6003546000906001600160a01b03163314610b305760405162461bcd60e51b81526004016103289061455e565b6001600160a01b038216600090815260086020526040902054610b5381806130c7565b6001600160a01b038085166000818152600860205260409081902093909355600354925163a9059cbb60e01b8152909263a9059cbb92610b9a9291169085906004016143d4565b602060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bec9190614022565b50306001600160a01b03167feaad90c8664cdf61d60bd7ba6745a881fd1c38d9f4ff0b373b4365cdeeb0f9e88242604051610c28929190614713565b60405180910390a290505b919050565b6004805460405163e0a87de160e01b815233928d926000926001600160a01b039091169163e0a87de191610c6e918691016142c6565b60206040518083038186803b158015610c8657600080fd5b505afa158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe9190613cb8565b9050826001600160a01b0316816001600160a01b031614610cf15760405162461bcd60e51b815260040161032890614531565b6040516370a0823160e01b815289906001600160a01b038f16906370a0823190610d1f9033906004016142c6565b60206040518083038186803b158015610d3757600080fd5b505afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f919061405a565b10158015610df957506040516370a0823160e01b815287906001600160a01b038d16906370a0823190610da69033906004016142c6565b60206040518083038186803b158015610dbe57600080fd5b505afa158015610dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df6919061405a565b10155b610e155760405162461bcd60e51b815260040161032890614595565b6040516323b872dd60e01b81526001600160a01b038c16906323b872dd90610e4590339030908c906004016142da565b602060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190614022565b506040516323b872dd60e01b81526001600160a01b038e16906323b872dd90610ec890339030908e906004016142da565b602060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190614022565b508c6001600160a01b03166372e0f853600260009054906101000a90046001600160a01b03168b6040518363ffffffff1660e01b8152600401610f5e9291906143d4565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b50505050610f98613b99565b604051806101400160405280604051806040016040528060138152602001722b32b934b334b2b2102837b7b6102a37b5b2b760691b81525081526020016040518060400160405280600381526020016215941560ea1b81525081526020018f6001600160a01b031681526020018e81526020018d6001600160a01b031681526020018c81526020018a8152602001888152602001878152602001868152509050611046818f8c8f8c336130dd565b5050505050505050505050505050565b6040516323b872dd60e01b81526001600160a01b038416906323b872dd90611086903390309087906004016142da565b602060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d89190614022565b5060006110e48461325f565b90506110f083826132fa565b336000908152600a602090815260408083206001600160a01b0389168452909152902054909350611122908490613306565b336000818152600a602090815260408083206001600160a01b038a168452825280832094909455918152600d90915220546111a957600c80546001810182557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319163390811790915590546000918252600d6020526040909120555b6001600160a01b03808316600090815260066020908152604080832054808452600b83528184209489168452939091529020546111e69085613012565b6000828152600b602090815260408083206001600160a01b038a168085529083528184209490945533808452600a83528184209484529390915290819020549051600080516020614781833981519152916112459189919042906144d6565b60405180910390a25050505050565b60095433906001600160a01b031681146112805760405162461bcd60e51b815260040161032890614505565b841580159061128e57508215155b1561162b576001600160a01b038087166000908152600560209081526040808320888516845290915281205490916112c89116868661333a565b6001600160a01b0380891660009081526005602090815260408083208a85168452825280832054815163ab63c60760e01b815291519596509294929093169263ab63c6079260048083019392829003018186803b15801561132857600080fd5b505afa15801561133c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113609190613cb8565b90506000866001600160a01b0316826001600160a01b0316635778472a8d6040518263ffffffff1660e01b815260040161139a91906143f8565b60a06040518083038186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906140fd565b516001600160a01b03161461147e57604051632bbc239560e11b81526001600160a01b03831690635778472a90611425908d906004016143f8565b60a06040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147591906140fd565b606001516114ff565b604051632bbc239560e11b81526001600160a01b03831690635778472a906114aa908e906004016143f8565b60a06040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906140fd565b606001515b60405163111303ab60e31b81529091506001600160a01b038316906388981d5890611536908e908e908d908c90429060040161443d565b600060405180830381600087803b15801561155057600080fd5b505af1158015611564573d6000803e3d6000fd5b50505050611577828c8c8b8a8689613402565b60008b8152601060209081526040808320546001600160a01b03808e168552600e8452828520908c1685529092529091208054879190839081106115b757fe5b60009182526020808320600660079093020191909101929092558c8152601082526040808220546001600160a01b03808f168452600e8552828420908d1684529093529020805491925087918390811061160d57fe5b906000526020600020906007020160060181905550505050506119ab565b611633613b17565b6000898152601060209081526040808320546001600160a01b03808c168552600e8452828520908a16855290925290912080548290811061167057fe5b600091825260208083206040805160e081018252600790940290910180546001600160a01b0390811680865260018301548216868601526002830154868501526003830154606087015260048301546080870152600583015460a0870190815260069093015460c08701528652600a8452828620908c1686529092529092205491519093506116ff9190613306565b82516001600160a01b039081166000908152600a602090815260408083208b851680855290835281842095909555928c168252600e815282822093825292909252902080548290811061174e57fe5b60009182526020808320600790920290910180546001600160a01b0319908116825560018201805490911690556002810183905560038101839055600481018390556005810183905560060182905583516001600160a01b03908116808452600a83526040808520928b16855291909252918290205491519091600080516020614781833981519152916117e5918a914290614630565b60405180910390a2506000888152601060209081526040808320546001600160a01b03808c168552600e8452828520908a16855290925290912080548290811061182b57fe5b600091825260208083206040805160e081018252600790940290910180546001600160a01b0390811680865260018301548216868601526002830154868501526003830154606087015260048301546080870152600583015460a0870190815260069093015460c08701528652600a8452828620908c1686529092529092205491519093506118ba9190613306565b82516001600160a01b039081166000908152600a602090815260408083208b851680855290835281842095909555928c168252600e815282822093825292909252902080548290811061190957fe5b60009182526020808320600790920290910180546001600160a01b0319908116825560018201805490911690556002810183905560038101839055600481018390556005810183905560060182905583516001600160a01b03908116808452600a83526040808520928b16855291909252918290205491519091600080516020614781833981519152916119a0918a914290614630565b60405180910390a250505b5050505050505050565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205490565b6119fb336119e9611f00565b6001600160a01b0316146101aa613742565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004805460405163e0a87de160e01b8152339285926000926001600160a01b039091169163e0a87de191611a7b918691016142c6565b60206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190613cb8565b9050826001600160a01b0316816001600160a01b031614611afe5760405162461bcd60e51b815260040161032890614531565b6001600160a01b0380861660009081526006602052604090819020546002549151631f29a8cd60e31b81529092606092169063f94d466890611b449085906004016143f8565b60006040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b989190810190613f56565b505090506060611ba782613754565b90506060825167ffffffffffffffff81118015611bc357600080fd5b50604051908082528060200260200182016040528015611bed578160200160208202803683370190505b509050611bf8613c04565b604051806080016040528084815260200183815260200160016000604051602001611c24929190614460565b60408051808303601f1901815291815290825260006020909201919091526002549051638bdb391360e01b81529192506001600160a01b031690638bdb391390611c78908890309081908790600401614401565b600060405180830381600087803b158015611c9257600080fd5b505af1158015611ca6573d6000803e3d6000fd5b50505050847f56eadf552f1d54f8f73fbbf801097c1c4d7bb3d77d5ac2bebfd0a8151642d55a8b42604051611cdc9291906143d4565b60405180910390a2600085815260076020526040908190205490516370a0823160e01b81526001600160a01b03808c169263a9059cbb9291169083906370a0823190611d2c9030906004016142c6565b60206040518083038186803b158015611d4457600080fd5b505afa158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c919061405a565b6040518363ffffffff1660e01b8152600401611d999291906143d4565b602060405180830381600087803b158015611db357600080fd5b505af1158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190614022565b50600085815260076020526040908190205490516370a0823160e01b81526001600160a01b03808d169263a9059cbb9291169083906370a0823190611e349030906004016142c6565b60206040518083038186803b158015611e4c57600080fd5b505afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e84919061405a565b6040518363ffffffff1660e01b8152600401611ea19291906143d4565b602060405180830381600087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef39190614022565b5050505050505050505050565b6000546001600160a01b031690565b611f1b336119e9611f00565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460405163e0a87de160e01b8152339284926000926001600160a01b039091169163e0a87de191611f73918691016142c6565b60206040518083038186803b158015611f8b57600080fd5b505afa158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc39190613cb8565b9050826001600160a01b0316816001600160a01b031614611ff65760405162461bcd60e51b815260040161032890614531565b6001600160a01b03808516600090815260066020908152604080832054808452600b8352818420948b168452939091529020548611156120485760405162461bcd60e51b8152600401610328906145cc565b6000818152600b602090815260408083206001600160a01b038b16845290915290205461207590876130c7565b6000828152600b602090815260408083206001600160a01b03808d168086529184528285209590955585845260079092529182902054915163a9059cbb60e01b8152909263a9059cbb926120d0929116908a906004016143d4565b602060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190614022565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b336000818152600d60205260409020546121795760405162461bcd60e51b815260040161032890614531565b6001600160a01b038416600090815260066020526040812054905b6001600160a01b038087166000908152600e60209081526040808320938916835292905220548110156129ac576121c9613b17565b6001600160a01b038088166000908152600e60209081526040808320938a168352929052208054839081106121fa57fe5b60009182526020918290206040805160e081018252600790930290910180546001600160a01b039081168085526001830154909116948401949094526002810154918301919091526003810154606083015260048101546080830152600581015460a08301526006015460c08201529150331480156122a0575080516001600160a01b039081166000908152600a60209081526040808320938a16835292905290812054135b156125f75780516001600160a01b039081166000908152600a60209081526040808320938a1683529290522054851261248b5780516001600160a01b038181166000908152600a60209081526040808320938b16808452939091529081902054905163a9059cbb60e01b8152919263a9059cbb9261232192906004016143d4565b602060405180830381600087803b15801561233b57600080fd5b505af115801561234f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123739190614022565b506000838152600b602090815260408083206001600160a01b03808b168086529184528285205486519091168552600a84528285209185529252909120546123bb91906130c7565b6000848152600b602090815260408083206001600160a01b03808c16808652918452828520959095558551909416808452600a835281842094845293909152908190205490516000805160206147818339815191529161241f918a919042906144a3565b60405180910390a280516001600160a01b039081166000908152600a60209081526040808320938a168352929052205461245a9086906130c7565b81516001600160a01b039081166000908152600a60209081526040808320938b1683529290529081205594506125f2565b805160405163a9059cbb60e01b81526001600160a01b0388169163a9059cbb916124ba919089906004016143d4565b602060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c9190614022565b506000838152600b602090815260408083206001600160a01b038a16845290915290205461253a90866130c7565b6000848152600b602090815260408083206001600160a01b03808c168552925291829020929092558251905191169060008051602061478183398151915290612588908990899042906144a3565b60405180910390a280516001600160a01b039081166000908152600a60209081526040808320938a16835292905220546125c29086613093565b81516001600160a01b039081166000908152600a60209081526040808320938b1683529290529081209190915594505b6129a3565b60208101516001600160a01b03163314801561263b57506020808201516001600160a01b039081166000908152600a83526040808220928a16825291909252812054135b156129a3576020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020548512612833576020808201516001600160a01b038181166000908152600a84526040808220928b168083529290945283902054925163a9059cbb60e01b8152909263a9059cbb926126c1929091906004016143d4565b602060405180830381600087803b1580156126db57600080fd5b505af11580156126ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127139190614022565b506000838152600b602090815260408083206001600160a01b03808b1680865291845282852054868501519091168552600a845282852091855292529091205461275d91906130c7565b6000848152600b602090815260408083206001600160a01b03808c168086529184528285209590955585830151909416808452600a83528184209484529390915290819020549051600080516020614781833981519152916127c3918a919042906144a3565b60405180910390a26020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020546128019086906130c7565b6020808301516001600160a01b039081166000908152600a83526040808220928b1682529190925281205594506129a3565b602081015160405163a9059cbb60e01b81526001600160a01b0388169163a9059cbb91612865919089906004016143d4565b602060405180830381600087803b15801561287f57600080fd5b505af1158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614022565b506000838152600b602090815260408083206001600160a01b038a1684529091529020546128e590866130c7565b6000848152600b602090815260408083206001600160a01b03808c1685529083529281902093909355830151915191169060008051602061478183398151915290612935908990899042906144a3565b60405180910390a26020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020546129729086613093565b6020808301516001600160a01b039081166000908152600a83526040808220928b1682529190925281209190915594505b50600101612194565b505050505050565b6129c0336119e9611f00565b6129d76001600160a01b03821615156101ab613742565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760205260408120546001600160a01b0316612a5657506000610c33565b506001610c33565b612a6a336119e9611f00565b600180546001600160a01b03199081166001600160a01b03968716179091556002805482169486169490941790935560048054841692851692909217909155600380548316919093161790915560098054339216919091179055565b6000851315612b35576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612b0a90612b0384846130c7565b8702613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612ba0565b6000851215612ba0576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612b7990612b7284846130c7565b8702613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000841315612c0f576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612be490612bdd84846130c7565b8602613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612c7a565b6000841215612c7a576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612c5390612c4c84846130c7565b8602613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000831315612ce9576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612cbe90612cb784846130c7565b8502613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612d54565b6000831215612d54576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612d2d90612d2684846130c7565b8502613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b876001600160a01b03167ff76f10f0e1a4d96de83e72f10dc6773179bdcf79f2ba735893488e0913d999598888612d8b86866130c7565b8902612d9787876130c7565b8902612da388886130c7565b890242604051612db8969594939291906142fe565b60405180910390a25050505050505050565b6000851315612e32576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612e0790612b7284846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612e96565b6000851215612e96576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612e6f90612b0384846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000841315612efe576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612ed390612c4c84846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612f62565b6000841215612f62576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612f3b90612bdd84846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000831315612f9f576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612cbe90612d2684846130c7565b6000831215612d54576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612d2d90612cb784846130c7565b6000828202613000841580612ff9575083858381612ff657fe5b04145b6003613742565b670de0b6b3a764000090049392505050565b60008282016130248482101583613742565b9392505050565b6000826001600160a01b031685600001516001600160a01b03161415613087576001600160a01b038085166000908152600a6020908152604080832093871683529290522054821361307f5750600161308b565b50600061308b565b5060015b949350505050565b60008183036130248284128015906130ab5750848213155b806130c057506000841280156130c057508482135b6001613742565b60006130d7838311156001613742565b50900390565b6001546040516304f9d33f60e11b81526001600160a01b03909116906309f3a67e9061310d90899060040161465f565b602060405180830381600087803b15801561312757600080fd5b505af115801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315f9190613cb8565b6001600160a01b0386811660009081526005602090815260408083208885168452825280832080546001600160a01b0319169585169590951794859055805163038fff2d60e41b815290519294909316926338fff2d09260048083019392829003018186803b1580156131d157600080fd5b505afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613209919061405a565b6001600160a01b0387811660009081526006602090815260408083208590558483526007909152902080546001600160a01b03191691851691909117905590506132568685878685613757565b50505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561329b57600080fd5b505afa1580156132af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d39190614177565b60ff16905060006132e56012836130c7565b600a0a670de0b6b3a764000002949350505050565b60006130248383612fdc565b600082820161302482841280159061331e5750848212155b80613333575060008412801561333357508482125b6000613742565b600080846001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160206040518083038186803b15801561337657600080fd5b505afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061405a565b90506133ba8382612fdc565b6001600160a01b0385166000908152600860205260409020549091506133e09082613012565b6001600160a01b03851660009081526008602052604090205590509392505050565b866001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561343b57600080fd5b505afa15801561344f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613473919061405a565b7fbe8183e0bf67f74150edc1b1b2ff1b35ca15cb451161a42e3c428c208c46f38f836001600160a01b0316896001600160a01b0316635778472a8a6040518263ffffffff1660e01b81526004016134ca91906143f8565b60a06040518083038186803b1580156134e257600080fd5b505afa1580156134f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351a91906140fd565b606001516001600160a01b0316146135b157604051632bbc239560e11b81526001600160a01b038a1690635778472a90613558908b906004016143f8565b60a06040518083038186803b15801561357057600080fd5b505afa158015613584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a891906140fd565b60600151613632565b604051632bbc239560e11b81526001600160a01b038a1690635778472a906135dd908a906004016143f8565b60a06040518083038186803b1580156135f557600080fd5b505afa158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d91906140fd565b606001515b84878b6001600160a01b0316632541897f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561366d57600080fd5b505afa158015613681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a59190613cb8565b8c6001600160a01b0316636945c1fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136de57600080fd5b505afa1580156136f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137169190613cb8565b898c8e8a426040516137319a99989796959493929190614334565b60405180910390a250505050505050565b816137505761375081613ac4565b5050565b90565b600254604051631f29a8cd60e31b81526060916001600160a01b03169063f94d4668906137889085906004016143f8565b60006040518083038186803b1580156137a057600080fd5b505afa1580156137b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137dc9190810190613f56565b5050905060606137eb82613754565b90506060825167ffffffffffffffff8111801561380757600080fd5b50604051908082528060200260200182016040528015613831578160200160208202803683370190505b5060025460405163095ea7b360e01b81529192506001600160a01b03808a169263095ea7b39261386792169089906004016143d4565b602060405180830381600087803b15801561388157600080fd5b505af1158015613895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b99190614022565b5060025460405163095ea7b360e01b81526001600160a01b038a81169263095ea7b3926138ee92909116908a906004016143d4565b602060405180830381600087803b15801561390857600080fd5b505af115801561391c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139409190614022565b5060005b8351811015613a0e57886001600160a01b031684828151811061396357fe5b60200260200101516001600160a01b03161415613998578682828151811061398757fe5b602002602001018181525050613a06565b876001600160a01b03168482815181106139ae57fe5b60200260200101516001600160a01b031614156139d2578582828151811061398757fe5b6139ed6dffffffffffffffffffffffffffff620f42406130c7565b8282815181106139f957fe5b6020026020010181815250505b600101613944565b50613a17613c04565b6040518060800160405280848152602001838152602001600084604051602001613a42929190614480565b60408051808303601f190181529181529082526000602090920191909152600254905163172b958560e31b81529192506001600160a01b03169063b95cac2890613a96908890309081908790600401614401565b600060405180830381600087803b158015613ab057600080fd5b505af1158015610570573d6000803e3d6000fd5b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b6040805160a081019091526000808252602082019081526020016000815260006020820181905260409091015290565b604051806101400160405280606081526020016060815260200160006001600160a01b031681526020016000801916815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160008152602001600081525090565b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f830112613c3e578081fd5b8151613c51613c4c82614748565b614721565b818152915060208083019084810181840286018201871015613c7257600080fd5b60005b84811015613c9157815184529282019290820190600101613c75565b505050505092915050565b600060208284031215613cad578081fd5b813561302481614768565b600060208284031215613cc9578081fd5b815161302481614768565b60008060408385031215613ce6578081fd5b8235613cf181614768565b91506020830135613d0181614768565b809150509250929050565b60008060008060808587031215613d21578182fd5b8435613d2c81614768565b93506020850135613d3c81614768565b92506040850135613d4c81614768565b91506060850135613d5c81614768565b939692955090935050565b600080600080600080600060e0888a031215613d81578283fd5b8735613d8c81614768565b96506020880135613d9c81614768565b9550604088013594506060880135613db381614768565b93506080880135925060a0880135613dca81614768565b8092505060c0880135905092959891949750929550565b60008060008060008060008060006101208a8c031215613dff578182fd5b8935613e0a81614768565b985060208a0135613e1a81614768565b989b989a505050506040870135966060810135966080820135965060a0820135955060c0820135945060e08201359350610100909101359150565b600080600060608486031215613e69578081fd5b8335613e7481614768565b92506020840135613e8481614768565b929592945050506040919091013590565b6000806000806000806000806000806101408b8d031215613eb4578384fd5b8a35613ebf81614768565b995060208b0135985060408b0135613ed681614768565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e082013596506101008201359550610120909101359350915050565b600080600060608486031215613f29578081fd5b8335613f3481614768565b9250602084013591506040840135613f4b81614768565b809150509250925092565b600080600060608486031215613f6a578081fd5b835167ffffffffffffffff80821115613f81578283fd5b818601915086601f830112613f94578283fd5b8151613fa2613c4c82614748565b80828252602080830192508086018b828387028901011115613fc2578788fd5b8796505b84871015613fed578051613fd981614768565b845260019690960195928101928101613fc6565b508901519097509350505080821115614004578283fd5b5061401186828701613c2e565b925050604084015190509250925092565b600060208284031215614033578081fd5b81518015158114613024578182fd5b600060208284031215614053578081fd5b5035919050565b60006020828403121561406b578081fd5b5051919050565b60008060408385031215614084578182fd5b823591506020830135613d0181614768565b600080600080600080600060e0888a0312156140b0578081fd5b873596506020880135955060408801356140c981614768565b94506060880135935060808801356140e081614768565b9699959850939692959460a0840135945060c09093013592915050565b600060a0828403121561410e578081fd5b61411860a0614721565b825161412381614768565b8152602083015160038110614136578283fd5b602082015260408301516005811061414c578283fd5b6040820152606083015161415f81614768565b60608201526080928301519281019290925250919050565b600060208284031215614188578081fd5b815160ff81168114613024578182fd5b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156141d4578151875295820195908201906001016141b8565b509495945050505050565b15159052565b60008151808452815b8181101561420a576020818501810151868301820152016141ee565b8181111561421b5782602083870101525b50601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156142755783516001600160a01b031683529284019291840191600101614250565b50508285015191508581038387015261428e81836141a5565b92505050604083015184820360408601526142a982826141e5565b91505060608301516142be60608601826141df565b509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b6001600160a01b039a8b168152988a1660208a01526040890197909752948816606088015292909616608086015260a085015260c084019490945260e08301939093526101008201929092526101208101919091526101400190565b6001600160a01b03978816815295871660208701526040860194909452919094166060840152608083019390935260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b8481526001600160a01b0384811660208301528316604082015260806060820181905260009061443390830184614230565b9695505050505050565b948552602085019390935260408401919091526060830152608082015260a00190565b604081016002841061446e57fe5b92815260ff9190911660209091015290565b60006004841061448c57fe5b8382526040602083015261308b60408301846141a5565b681dda5d1a191c985ddb60ba1b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6437b33332b960d91b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6020808252601290820152714f6e6c79204272696467652061636365737360701b604082015260600190565b602080825260139082015272556e617574686f72697a65642061636365737360681b604082015260600190565b6020808252601f908201527f556e617574686f72697a656420636f6c6c656374696f6e207265717565737400604082015260600190565b60208082526019908201527f4e6f2062616c616e636520746f2063726561746520706f6f6c00000000000000604082015260600190565b6020808252818101527f496e73756666696369656e7420636f6c6c61746572616c20666f7220706f6f6c604082015260600190565b640dac2e8c6d60db1b81526001600160a01b039390931660208401526040830191909152606082015260800190565b64747261646560d81b81526001600160a01b039390931660208401526040830191909152606082015260800190565b600060208252825161014080602085015261467e6101608501836141e5565b91506020850151601f1985840301604086015261469b83826141e5565b92505060408501516146b06060860182614198565b506060850151608085015260808501516146cd60a0860182614198565b5060a085015160c085015260c085015160e085015260e0850151610100818187015280870151915050610120818187015280870151838701525050508091505092915050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561474057600080fd5b604052919050565b600067ffffffffffffffff82111561475e578081fd5b5060209081020190565b6001600160a01b038116811461477d57600080fd5b5056fe9729135f54e0b4d82a83f156404c915e7232ec9706f1de0aea769af82cc1f8eaa2646970667358221220482b13171bfb33cc7404b5c88cccd434f93c1825c2138f20842193276f070a8364736f6c63430007010033",
    "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063719dcf4a116100a2578063a55e866811610071578063a55e866814610203578063d9caed1214610216578063f2fde38b14610229578063f6c009271461023c578063f8c8765e1461025c5761010b565b8063719dcf4a146101b55780638da5cb5b146101c85780638dd14802146101dd57806397db1a92146101f05761010b565b806359e7e4b1116100de57806359e7e4b1146101745780636b0fd140146101875780636f943a091461019a578063715018a6146101ad5761010b565b806320f55dfe146101105780632b06b510146101255780632d91674614610138578063541af9d814610161575b600080fd5b61012361011e366004613de1565b61026f565b005b610123610133366004613d67565b61057f565b61014b610146366004613c9c565b610b03565b60405161015891906143f8565b60405180910390f35b61012361016f366004613e95565b610c38565b610123610182366004613f15565b611056565b610123610195366004614096565b611254565b61014b6101a8366004614072565b6119b5565b6101236119dd565b6101236101c3366004613cd4565b611a45565b6101d0611f00565b60405161015891906142c6565b6101236101eb366004613c9c565b611f0f565b6101236101fe366004613f15565b611f3d565b61014b610211366004613cd4565b612122565b610123610224366004613e55565b61214d565b610123610237366004613c9c565b6129b4565b61024f61024a366004614042565b612a32565b60405161015891906143ed565b61012361026a366004613d0c565b612a5e565b6004805460405163e0a87de160e01b815233928c926000926001600160a01b039091169163e0a87de1916102a5918691016142c6565b60206040518083038186803b1580156102bd57600080fd5b505afa1580156102d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102f59190613cb8565b9050826001600160a01b0316816001600160a01b0316146103315760405162461bcd60e51b815260040161032890614531565b60405180910390fd5b60005b600e60008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020805490508110156105705761038f613b17565b600e60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002082815481106103e257fe5b90600052602060002090600702016040518060e00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090506000600a600083600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205413156104fa576104fa81600001518f8f8e8d8d8c8860c00151612ac6565b6000600a600083602001516001600160a01b03166001600160a01b0316815260200190815260200160002060008f6001600160a01b03166001600160a01b031681526020019081526020016000205413156105675761056781602001518f8f8f8e8c8c8860c00151612dca565b50600101610334565b50505050505050505050505050565b60095433906001600160a01b031681146105ab5760405162461bcd60e51b815260040161032890614505565b6105b3613b69565b6001600160a01b038087166000908152600560209081526040808320888516845282529182902054825163ab63c60760e01b8152925193169263ab63c607926004808201939291829003018186803b15801561060e57600080fd5b505afa158015610622573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106469190613cb8565b6001600160a01b0316635778472a886040518263ffffffff1660e01b815260040161067191906143f8565b60a06040518083038186803b15801561068957600080fd5b505afa15801561069d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c191906140fd565b6001600160a01b03808816600090815260056020908152604080832089851684528252808320548151631288bdb960e11b8152915195965092946107cb94610766948a949116926325117b729260048083019392829003018186803b15801561072957600080fd5b505afa15801561073d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610761919061405a565b612fdc565b6001600160a01b03808a1660009081526005602090815260408083208b85168452825291829020548251635c1548fb60e01b815292516107c6948b94921692635c1548fb9260048082019391829003018186803b15801561072957600080fd5b613012565b90506107d9828b878461302b565b15610af757866001600160a01b03167f4f21132feec602e5e9588b602a7ede709b68eed293452dd8745c2c80cb3c3f118b8b8989898e426040516108239796959493929190614390565b60405180910390a2846001600160a01b031682600001516001600160a01b03161480156108655750896001600160a01b031682606001516001600160a01b0316145b156108ee576001600160a01b03808b166000908152600a602090815260408083209389168352929052205461089a9082613093565b6001600160a01b038b81166000818152600a60209081526040808320948b16835293905282902083905590519091600080516020614781833981519152916108e59189914290614601565b60405180910390a25b600080866001600160a01b031684600001516001600160a01b0316141561091957508a90508961093d565b886001600160a01b031684600001516001600160a01b0316141561093d57508990508a5b610945613b17565b6040518060e00160405280846001600160a01b03168152602001836001600160a01b031681526020018a81526020018881526020018c815260200185815260200160008152509050600e60008b6001600160a01b03166001600160a01b031681526020019081526020016000206000896001600160a01b03166001600160a01b0316815260200190815260200160002081908060018154018082558091505060019003906000526020600020906007020160009091909190915060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015550506001600e60008c6001600160a01b03166001600160a01b0316815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000208054905003601060008d8152602001908152602001600020819055505050505b50505050505050505050565b6003546000906001600160a01b03163314610b305760405162461bcd60e51b81526004016103289061455e565b6001600160a01b038216600090815260086020526040902054610b5381806130c7565b6001600160a01b038085166000818152600860205260409081902093909355600354925163a9059cbb60e01b8152909263a9059cbb92610b9a9291169085906004016143d4565b602060405180830381600087803b158015610bb457600080fd5b505af1158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bec9190614022565b50306001600160a01b03167feaad90c8664cdf61d60bd7ba6745a881fd1c38d9f4ff0b373b4365cdeeb0f9e88242604051610c28929190614713565b60405180910390a290505b919050565b6004805460405163e0a87de160e01b815233928d926000926001600160a01b039091169163e0a87de191610c6e918691016142c6565b60206040518083038186803b158015610c8657600080fd5b505afa158015610c9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbe9190613cb8565b9050826001600160a01b0316816001600160a01b031614610cf15760405162461bcd60e51b815260040161032890614531565b6040516370a0823160e01b815289906001600160a01b038f16906370a0823190610d1f9033906004016142c6565b60206040518083038186803b158015610d3757600080fd5b505afa158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f919061405a565b10158015610df957506040516370a0823160e01b815287906001600160a01b038d16906370a0823190610da69033906004016142c6565b60206040518083038186803b158015610dbe57600080fd5b505afa158015610dd2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610df6919061405a565b10155b610e155760405162461bcd60e51b815260040161032890614595565b6040516323b872dd60e01b81526001600160a01b038c16906323b872dd90610e4590339030908c906004016142da565b602060405180830381600087803b158015610e5f57600080fd5b505af1158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e979190614022565b506040516323b872dd60e01b81526001600160a01b038e16906323b872dd90610ec890339030908e906004016142da565b602060405180830381600087803b158015610ee257600080fd5b505af1158015610ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1a9190614022565b508c6001600160a01b03166372e0f853600260009054906101000a90046001600160a01b03168b6040518363ffffffff1660e01b8152600401610f5e9291906143d4565b600060405180830381600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b50505050610f98613b99565b604051806101400160405280604051806040016040528060138152602001722b32b934b334b2b2102837b7b6102a37b5b2b760691b81525081526020016040518060400160405280600381526020016215941560ea1b81525081526020018f6001600160a01b031681526020018e81526020018d6001600160a01b031681526020018c81526020018a8152602001888152602001878152602001868152509050611046818f8c8f8c336130dd565b5050505050505050505050505050565b6040516323b872dd60e01b81526001600160a01b038416906323b872dd90611086903390309087906004016142da565b602060405180830381600087803b1580156110a057600080fd5b505af11580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d89190614022565b5060006110e48461325f565b90506110f083826132fa565b336000908152600a602090815260408083206001600160a01b0389168452909152902054909350611122908490613306565b336000818152600a602090815260408083206001600160a01b038a168452825280832094909455918152600d90915220546111a957600c80546001810182557fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319163390811790915590546000918252600d6020526040909120555b6001600160a01b03808316600090815260066020908152604080832054808452600b83528184209489168452939091529020546111e69085613012565b6000828152600b602090815260408083206001600160a01b038a168085529083528184209490945533808452600a83528184209484529390915290819020549051600080516020614781833981519152916112459189919042906144d6565b60405180910390a25050505050565b60095433906001600160a01b031681146112805760405162461bcd60e51b815260040161032890614505565b841580159061128e57508215155b1561162b576001600160a01b038087166000908152600560209081526040808320888516845290915281205490916112c89116868661333a565b6001600160a01b0380891660009081526005602090815260408083208a85168452825280832054815163ab63c60760e01b815291519596509294929093169263ab63c6079260048083019392829003018186803b15801561132857600080fd5b505afa15801561133c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113609190613cb8565b90506000866001600160a01b0316826001600160a01b0316635778472a8d6040518263ffffffff1660e01b815260040161139a91906143f8565b60a06040518083038186803b1580156113b257600080fd5b505afa1580156113c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ea91906140fd565b516001600160a01b03161461147e57604051632bbc239560e11b81526001600160a01b03831690635778472a90611425908d906004016143f8565b60a06040518083038186803b15801561143d57600080fd5b505afa158015611451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147591906140fd565b606001516114ff565b604051632bbc239560e11b81526001600160a01b03831690635778472a906114aa908e906004016143f8565b60a06040518083038186803b1580156114c257600080fd5b505afa1580156114d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fa91906140fd565b606001515b60405163111303ab60e31b81529091506001600160a01b038316906388981d5890611536908e908e908d908c90429060040161443d565b600060405180830381600087803b15801561155057600080fd5b505af1158015611564573d6000803e3d6000fd5b50505050611577828c8c8b8a8689613402565b60008b8152601060209081526040808320546001600160a01b03808e168552600e8452828520908c1685529092529091208054879190839081106115b757fe5b60009182526020808320600660079093020191909101929092558c8152601082526040808220546001600160a01b03808f168452600e8552828420908d1684529093529020805491925087918390811061160d57fe5b906000526020600020906007020160060181905550505050506119ab565b611633613b17565b6000898152601060209081526040808320546001600160a01b03808c168552600e8452828520908a16855290925290912080548290811061167057fe5b600091825260208083206040805160e081018252600790940290910180546001600160a01b0390811680865260018301548216868601526002830154868501526003830154606087015260048301546080870152600583015460a0870190815260069093015460c08701528652600a8452828620908c1686529092529092205491519093506116ff9190613306565b82516001600160a01b039081166000908152600a602090815260408083208b851680855290835281842095909555928c168252600e815282822093825292909252902080548290811061174e57fe5b60009182526020808320600790920290910180546001600160a01b0319908116825560018201805490911690556002810183905560038101839055600481018390556005810183905560060182905583516001600160a01b03908116808452600a83526040808520928b16855291909252918290205491519091600080516020614781833981519152916117e5918a914290614630565b60405180910390a2506000888152601060209081526040808320546001600160a01b03808c168552600e8452828520908a16855290925290912080548290811061182b57fe5b600091825260208083206040805160e081018252600790940290910180546001600160a01b0390811680865260018301548216868601526002830154868501526003830154606087015260048301546080870152600583015460a0870190815260069093015460c08701528652600a8452828620908c1686529092529092205491519093506118ba9190613306565b82516001600160a01b039081166000908152600a602090815260408083208b851680855290835281842095909555928c168252600e815282822093825292909252902080548290811061190957fe5b60009182526020808320600790920290910180546001600160a01b0319908116825560018201805490911690556002810183905560038101839055600481018390556005810183905560060182905583516001600160a01b03908116808452600a83526040808520928b16855291909252918290205491519091600080516020614781833981519152916119a0918a914290614630565b60405180910390a250505b5050505050505050565b6000918252600b602090815260408084206001600160a01b0393909316845291905290205490565b6119fb336119e9611f00565b6001600160a01b0316146101aa613742565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6004805460405163e0a87de160e01b8152339285926000926001600160a01b039091169163e0a87de191611a7b918691016142c6565b60206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611acb9190613cb8565b9050826001600160a01b0316816001600160a01b031614611afe5760405162461bcd60e51b815260040161032890614531565b6001600160a01b0380861660009081526006602052604090819020546002549151631f29a8cd60e31b81529092606092169063f94d466890611b449085906004016143f8565b60006040518083038186803b158015611b5c57600080fd5b505afa158015611b70573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b989190810190613f56565b505090506060611ba782613754565b90506060825167ffffffffffffffff81118015611bc357600080fd5b50604051908082528060200260200182016040528015611bed578160200160208202803683370190505b509050611bf8613c04565b604051806080016040528084815260200183815260200160016000604051602001611c24929190614460565b60408051808303601f1901815291815290825260006020909201919091526002549051638bdb391360e01b81529192506001600160a01b031690638bdb391390611c78908890309081908790600401614401565b600060405180830381600087803b158015611c9257600080fd5b505af1158015611ca6573d6000803e3d6000fd5b50505050847f56eadf552f1d54f8f73fbbf801097c1c4d7bb3d77d5ac2bebfd0a8151642d55a8b42604051611cdc9291906143d4565b60405180910390a2600085815260076020526040908190205490516370a0823160e01b81526001600160a01b03808c169263a9059cbb9291169083906370a0823190611d2c9030906004016142c6565b60206040518083038186803b158015611d4457600080fd5b505afa158015611d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7c919061405a565b6040518363ffffffff1660e01b8152600401611d999291906143d4565b602060405180830381600087803b158015611db357600080fd5b505af1158015611dc7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611deb9190614022565b50600085815260076020526040908190205490516370a0823160e01b81526001600160a01b03808d169263a9059cbb9291169083906370a0823190611e349030906004016142c6565b60206040518083038186803b158015611e4c57600080fd5b505afa158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e84919061405a565b6040518363ffffffff1660e01b8152600401611ea19291906143d4565b602060405180830381600087803b158015611ebb57600080fd5b505af1158015611ecf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef39190614022565b5050505050505050505050565b6000546001600160a01b031690565b611f1b336119e9611f00565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6004805460405163e0a87de160e01b8152339284926000926001600160a01b039091169163e0a87de191611f73918691016142c6565b60206040518083038186803b158015611f8b57600080fd5b505afa158015611f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc39190613cb8565b9050826001600160a01b0316816001600160a01b031614611ff65760405162461bcd60e51b815260040161032890614531565b6001600160a01b03808516600090815260066020908152604080832054808452600b8352818420948b168452939091529020548611156120485760405162461bcd60e51b8152600401610328906145cc565b6000818152600b602090815260408083206001600160a01b038b16845290915290205461207590876130c7565b6000828152600b602090815260408083206001600160a01b03808d168086529184528285209590955585845260079092529182902054915163a9059cbb60e01b8152909263a9059cbb926120d0929116908a906004016143d4565b602060405180830381600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ab9190614022565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b336000818152600d60205260409020546121795760405162461bcd60e51b815260040161032890614531565b6001600160a01b038416600090815260066020526040812054905b6001600160a01b038087166000908152600e60209081526040808320938916835292905220548110156129ac576121c9613b17565b6001600160a01b038088166000908152600e60209081526040808320938a168352929052208054839081106121fa57fe5b60009182526020918290206040805160e081018252600790930290910180546001600160a01b039081168085526001830154909116948401949094526002810154918301919091526003810154606083015260048101546080830152600581015460a08301526006015460c08201529150331480156122a0575080516001600160a01b039081166000908152600a60209081526040808320938a16835292905290812054135b156125f75780516001600160a01b039081166000908152600a60209081526040808320938a1683529290522054851261248b5780516001600160a01b038181166000908152600a60209081526040808320938b16808452939091529081902054905163a9059cbb60e01b8152919263a9059cbb9261232192906004016143d4565b602060405180830381600087803b15801561233b57600080fd5b505af115801561234f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123739190614022565b506000838152600b602090815260408083206001600160a01b03808b168086529184528285205486519091168552600a84528285209185529252909120546123bb91906130c7565b6000848152600b602090815260408083206001600160a01b03808c16808652918452828520959095558551909416808452600a835281842094845293909152908190205490516000805160206147818339815191529161241f918a919042906144a3565b60405180910390a280516001600160a01b039081166000908152600a60209081526040808320938a168352929052205461245a9086906130c7565b81516001600160a01b039081166000908152600a60209081526040808320938b1683529290529081205594506125f2565b805160405163a9059cbb60e01b81526001600160a01b0388169163a9059cbb916124ba919089906004016143d4565b602060405180830381600087803b1580156124d457600080fd5b505af11580156124e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250c9190614022565b506000838152600b602090815260408083206001600160a01b038a16845290915290205461253a90866130c7565b6000848152600b602090815260408083206001600160a01b03808c168552925291829020929092558251905191169060008051602061478183398151915290612588908990899042906144a3565b60405180910390a280516001600160a01b039081166000908152600a60209081526040808320938a16835292905220546125c29086613093565b81516001600160a01b039081166000908152600a60209081526040808320938b1683529290529081209190915594505b6129a3565b60208101516001600160a01b03163314801561263b57506020808201516001600160a01b039081166000908152600a83526040808220928a16825291909252812054135b156129a3576020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020548512612833576020808201516001600160a01b038181166000908152600a84526040808220928b168083529290945283902054925163a9059cbb60e01b8152909263a9059cbb926126c1929091906004016143d4565b602060405180830381600087803b1580156126db57600080fd5b505af11580156126ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127139190614022565b506000838152600b602090815260408083206001600160a01b03808b1680865291845282852054868501519091168552600a845282852091855292529091205461275d91906130c7565b6000848152600b602090815260408083206001600160a01b03808c168086529184528285209590955585830151909416808452600a83528184209484529390915290819020549051600080516020614781833981519152916127c3918a919042906144a3565b60405180910390a26020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020546128019086906130c7565b6020808301516001600160a01b039081166000908152600a83526040808220928b1682529190925281205594506129a3565b602081015160405163a9059cbb60e01b81526001600160a01b0388169163a9059cbb91612865919089906004016143d4565b602060405180830381600087803b15801561287f57600080fd5b505af1158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190614022565b506000838152600b602090815260408083206001600160a01b038a1684529091529020546128e590866130c7565b6000848152600b602090815260408083206001600160a01b03808c1685529083529281902093909355830151915191169060008051602061478183398151915290612935908990899042906144a3565b60405180910390a26020808201516001600160a01b039081166000908152600a83526040808220928a168252919092529020546129729086613093565b6020808301516001600160a01b039081166000908152600a83526040808220928b1682529190925281209190915594505b50600101612194565b505050505050565b6129c0336119e9611f00565b6129d76001600160a01b03821615156101ab613742565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818152600760205260408120546001600160a01b0316612a5657506000610c33565b506001610c33565b612a6a336119e9611f00565b600180546001600160a01b03199081166001600160a01b03968716179091556002805482169486169490941790935560048054841692851692909217909155600380548316919093161790915560098054339216919091179055565b6000851315612b35576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612b0a90612b0384846130c7565b8702613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612ba0565b6000851215612ba0576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612b7990612b7284846130c7565b8702613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000841315612c0f576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612be490612bdd84846130c7565b8602613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612c7a565b6000841215612c7a576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612c5390612c4c84846130c7565b8602613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000831315612ce9576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612cbe90612cb784846130c7565b8502613093565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612d54565b6000831215612d54576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612d2d90612d2684846130c7565b8502613306565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b876001600160a01b03167ff76f10f0e1a4d96de83e72f10dc6773179bdcf79f2ba735893488e0913d999598888612d8b86866130c7565b8902612d9787876130c7565b8902612da388886130c7565b890242604051612db8969594939291906142fe565b60405180910390a25050505050505050565b6000851315612e32576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612e0790612b7284846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612e96565b6000851215612e96576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612e6f90612b0384846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000841315612efe576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612ed390612c4c84846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b1683529290522055612f62565b6000841215612f62576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612f3b90612bdd84846130c7565b6001600160a01b03808a166000908152600a60209081526040808320938b16835292905220555b6000831315612f9f576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612cbe90612d2684846130c7565b6000831215612d54576001600160a01b038089166000908152600a60209081526040808320938a1683529290522054612d2d90612cb784846130c7565b6000828202613000841580612ff9575083858381612ff657fe5b04145b6003613742565b670de0b6b3a764000090049392505050565b60008282016130248482101583613742565b9392505050565b6000826001600160a01b031685600001516001600160a01b03161415613087576001600160a01b038085166000908152600a6020908152604080832093871683529290522054821361307f5750600161308b565b50600061308b565b5060015b949350505050565b60008183036130248284128015906130ab5750848213155b806130c057506000841280156130c057508482135b6001613742565b60006130d7838311156001613742565b50900390565b6001546040516304f9d33f60e11b81526001600160a01b03909116906309f3a67e9061310d90899060040161465f565b602060405180830381600087803b15801561312757600080fd5b505af115801561313b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315f9190613cb8565b6001600160a01b0386811660009081526005602090815260408083208885168452825280832080546001600160a01b0319169585169590951794859055805163038fff2d60e41b815290519294909316926338fff2d09260048083019392829003018186803b1580156131d157600080fd5b505afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613209919061405a565b6001600160a01b0387811660009081526006602090815260408083208590558483526007909152902080546001600160a01b03191691851691909117905590506132568685878685613757565b50505050505050565b600080826001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561329b57600080fd5b505afa1580156132af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d39190614177565b60ff16905060006132e56012836130c7565b600a0a670de0b6b3a764000002949350505050565b60006130248383612fdc565b600082820161302482841280159061331e5750848212155b80613333575060008412801561333357508482125b6000613742565b600080846001600160a01b031663ced72f876040518163ffffffff1660e01b815260040160206040518083038186803b15801561337657600080fd5b505afa15801561338a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133ae919061405a565b90506133ba8382612fdc565b6001600160a01b0385166000908152600860205260409020549091506133e09082613012565b6001600160a01b03851660009081526008602052604090205590509392505050565b866001600160a01b03166338fff2d06040518163ffffffff1660e01b815260040160206040518083038186803b15801561343b57600080fd5b505afa15801561344f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613473919061405a565b7fbe8183e0bf67f74150edc1b1b2ff1b35ca15cb451161a42e3c428c208c46f38f836001600160a01b0316896001600160a01b0316635778472a8a6040518263ffffffff1660e01b81526004016134ca91906143f8565b60a06040518083038186803b1580156134e257600080fd5b505afa1580156134f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061351a91906140fd565b606001516001600160a01b0316146135b157604051632bbc239560e11b81526001600160a01b038a1690635778472a90613558908b906004016143f8565b60a06040518083038186803b15801561357057600080fd5b505afa158015613584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a891906140fd565b60600151613632565b604051632bbc239560e11b81526001600160a01b038a1690635778472a906135dd908a906004016143f8565b60a06040518083038186803b1580156135f557600080fd5b505afa158015613609573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061362d91906140fd565b606001515b84878b6001600160a01b0316632541897f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561366d57600080fd5b505afa158015613681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a59190613cb8565b8c6001600160a01b0316636945c1fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156136de57600080fd5b505afa1580156136f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137169190613cb8565b898c8e8a426040516137319a99989796959493929190614334565b60405180910390a250505050505050565b816137505761375081613ac4565b5050565b90565b600254604051631f29a8cd60e31b81526060916001600160a01b03169063f94d4668906137889085906004016143f8565b60006040518083038186803b1580156137a057600080fd5b505afa1580156137b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137dc9190810190613f56565b5050905060606137eb82613754565b90506060825167ffffffffffffffff8111801561380757600080fd5b50604051908082528060200260200182016040528015613831578160200160208202803683370190505b5060025460405163095ea7b360e01b81529192506001600160a01b03808a169263095ea7b39261386792169089906004016143d4565b602060405180830381600087803b15801561388157600080fd5b505af1158015613895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138b99190614022565b5060025460405163095ea7b360e01b81526001600160a01b038a81169263095ea7b3926138ee92909116908a906004016143d4565b602060405180830381600087803b15801561390857600080fd5b505af115801561391c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139409190614022565b5060005b8351811015613a0e57886001600160a01b031684828151811061396357fe5b60200260200101516001600160a01b03161415613998578682828151811061398757fe5b602002602001018181525050613a06565b876001600160a01b03168482815181106139ae57fe5b60200260200101516001600160a01b031614156139d2578582828151811061398757fe5b6139ed6dffffffffffffffffffffffffffff620f42406130c7565b8282815181106139f957fe5b6020026020010181815250505b600101613944565b50613a17613c04565b6040518060800160405280848152602001838152602001600084604051602001613a42929190614480565b60408051808303601f190181529181529082526000602090920191909152600254905163172b958560e31b81529192506001600160a01b03169063b95cac2890613a96908890309081908790600401614401565b600060405180830381600087803b158015613ab057600080fd5b505af1158015610570573d6000803e3d6000fd5b62461bcd60e51b6000908152602060045260076024526642414c23000030600a808404818106603090810160081b95839006959095019082900491820690940160101b939093010160c81b604452606490fd5b6040518060e0016040528060006001600160a01b0316815260200160006001600160a01b0316815260200160008152602001600081526020016000801916815260200160008152602001600081525090565b6040805160a081019091526000808252602082019081526020016000815260006020820181905260409091015290565b604051806101400160405280606081526020016060815260200160006001600160a01b031681526020016000801916815260200160006001600160a01b0316815260200160008019168152602001600081526020016000815260200160008152602001600081525090565b60405180608001604052806060815260200160608152602001606081526020016000151581525090565b600082601f830112613c3e578081fd5b8151613c51613c4c82614748565b614721565b818152915060208083019084810181840286018201871015613c7257600080fd5b60005b84811015613c9157815184529282019290820190600101613c75565b505050505092915050565b600060208284031215613cad578081fd5b813561302481614768565b600060208284031215613cc9578081fd5b815161302481614768565b60008060408385031215613ce6578081fd5b8235613cf181614768565b91506020830135613d0181614768565b809150509250929050565b60008060008060808587031215613d21578182fd5b8435613d2c81614768565b93506020850135613d3c81614768565b92506040850135613d4c81614768565b91506060850135613d5c81614768565b939692955090935050565b600080600080600080600060e0888a031215613d81578283fd5b8735613d8c81614768565b96506020880135613d9c81614768565b9550604088013594506060880135613db381614768565b93506080880135925060a0880135613dca81614768565b8092505060c0880135905092959891949750929550565b60008060008060008060008060006101208a8c031215613dff578182fd5b8935613e0a81614768565b985060208a0135613e1a81614768565b989b989a505050506040870135966060810135966080820135965060a0820135955060c0820135945060e08201359350610100909101359150565b600080600060608486031215613e69578081fd5b8335613e7481614768565b92506020840135613e8481614768565b929592945050506040919091013590565b6000806000806000806000806000806101408b8d031215613eb4578384fd5b8a35613ebf81614768565b995060208b0135985060408b0135613ed681614768565b999c989b5098996060810135995060808101359860a0820135985060c0820135975060e082013596506101008201359550610120909101359350915050565b600080600060608486031215613f29578081fd5b8335613f3481614768565b9250602084013591506040840135613f4b81614768565b809150509250925092565b600080600060608486031215613f6a578081fd5b835167ffffffffffffffff80821115613f81578283fd5b818601915086601f830112613f94578283fd5b8151613fa2613c4c82614748565b80828252602080830192508086018b828387028901011115613fc2578788fd5b8796505b84871015613fed578051613fd981614768565b845260019690960195928101928101613fc6565b508901519097509350505080821115614004578283fd5b5061401186828701613c2e565b925050604084015190509250925092565b600060208284031215614033578081fd5b81518015158114613024578182fd5b600060208284031215614053578081fd5b5035919050565b60006020828403121561406b578081fd5b5051919050565b60008060408385031215614084578182fd5b823591506020830135613d0181614768565b600080600080600080600060e0888a0312156140b0578081fd5b873596506020880135955060408801356140c981614768565b94506060880135935060808801356140e081614768565b9699959850939692959460a0840135945060c09093013592915050565b600060a0828403121561410e578081fd5b61411860a0614721565b825161412381614768565b8152602083015160038110614136578283fd5b602082015260408301516005811061414c578283fd5b6040820152606083015161415f81614768565b60608201526080928301519281019290925250919050565b600060208284031215614188578081fd5b815160ff81168114613024578182fd5b6001600160a01b03169052565b6000815180845260208085019450808401835b838110156141d4578151875295820195908201906001016141b8565b509495945050505050565b15159052565b60008151808452815b8181101561420a576020818501810151868301820152016141ee565b8181111561421b5782602083870101525b50601f01601f19169290920160200192915050565b8051608080845281519084018190526000916020919082019060a0860190845b818110156142755783516001600160a01b031683529284019291840191600101614250565b50508285015191508581038387015261428e81836141a5565b92505050604083015184820360408601526142a982826141e5565b91505060608301516142be60608601826141df565b509392505050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03968716815294909516602085015260408401929092526060830152608082015260a081019190915260c00190565b6001600160a01b039a8b168152988a1660208a01526040890197909752948816606088015292909616608086015260a085015260c084019490945260e08301939093526101008201929092526101208101919091526101400190565b6001600160a01b03978816815295871660208701526040860194909452919094166060840152608083019390935260a082019290925260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b8481526001600160a01b0384811660208301528316604082015260806060820181905260009061443390830184614230565b9695505050505050565b948552602085019390935260408401919091526060830152608082015260a00190565b604081016002841061446e57fe5b92815260ff9190911660209091015290565b60006004841061448c57fe5b8382526040602083015261308b60408301846141a5565b681dda5d1a191c985ddb60ba1b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6437b33332b960d91b81526001600160a01b039390931660208401526040830191909152606082015260800190565b6020808252601290820152714f6e6c79204272696467652061636365737360701b604082015260600190565b602080825260139082015272556e617574686f72697a65642061636365737360681b604082015260600190565b6020808252601f908201527f556e617574686f72697a656420636f6c6c656374696f6e207265717565737400604082015260600190565b60208082526019908201527f4e6f2062616c616e636520746f2063726561746520706f6f6c00000000000000604082015260600190565b6020808252818101527f496e73756666696369656e7420636f6c6c61746572616c20666f7220706f6f6c604082015260600190565b640dac2e8c6d60db1b81526001600160a01b039390931660208401526040830191909152606082015260800190565b64747261646560d81b81526001600160a01b039390931660208401526040830191909152606082015260800190565b600060208252825161014080602085015261467e6101608501836141e5565b91506020850151601f1985840301604086015261469b83826141e5565b92505060408501516146b06060860182614198565b506060850151608085015260808501516146cd60a0860182614198565b5060a085015160c085015260c085015160e085015260e0850151610100818187015280870151915050610120818187015280870151838701525050508091505092915050565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561474057600080fd5b604052919050565b600067ffffffffffffffff82111561475e578081fd5b5060209081020190565b6001600160a01b038116811461477d57600080fd5b5056fe9729135f54e0b4d82a83f156404c915e7232ec9706f1de0aea769af82cc1f8eaa2646970667358221220482b13171bfb33cc7404b5c88cccd434f93c1825c2138f20842193276f070a8364736f6c63430007010033",
    "immutableReferences": {},
    "sourceMap": "951:26017:16:-:0;;;;;;;;;;;;-1:-1:-1;993:6:9;:19;;-1:-1:-1;;;;;;993:19:9;1002:10;993:19;;;;;1027:44;;1002:10;;993:6;1027:44;;993:6;;1027:44;951:26017:16;;;;;;",
    "deployedSourceMap": "951:26017:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17383:1447;;;;;;:::i;:::-;;:::i;:::-;;10922:2426;;;;;;:::i;:::-;;:::i;25385:446::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5029:1339;;;;;;:::i;:::-;;:::i;9279:838::-;;;;;;:::i;:::-;;:::i;13744:2374::-;;;;;;:::i;:::-;;:::i;10588:156::-;;;;;;:::i;:::-;;:::i;1777:145:9:-;;;:::i;8144:1123:16:-;;;;;;:::i;:::-;;:::i;1154:85:9:-;;;:::i;:::-;;;;;;;:::i;4739:87:16:-;;;;;;:::i;:::-;;:::i;10125:455::-;;;;;;:::i;:::-;;:::i;10752:158::-;;;;;;:::i;:::-;;:::i;22159:3218::-;;;;;;:::i;:::-;;:::i;2071:225:9:-;;;;;;:::i;:::-;;:::i;4834:187:16:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4416:315::-;;;;;;:::i;:::-;;:::i;17383:1447::-;4054:16;;;:32;;-1:-1:-1;;;4054:32:16;;17641:10;;17653:8;;4041:10;;-1:-1:-1;;;;;4054:16:16;;;;:22;;:32;;17653:8;;4054:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4041:45;;4109:6;-1:-1:-1;;;;;4105:10:16;:2;-1:-1:-1;;;;;4105:10:16;;4097:42;;;;-1:-1:-1;;;4097:42:16;;;;;;;:::i;:::-;;;;;;;;;17677:9:::1;17673:669;17692:9;:19;17702:8;-1:-1:-1::0;;;;;17692:19:16::1;-1:-1:-1::0;;;;;17692:19:16::1;;;;;;;;;;;;:29;17712:8;-1:-1:-1::0;;;;;17692:29:16::1;-1:-1:-1::0;;;;;17692:29:16::1;;;;;;;;;;;;:36;;;;17690:1;:38;17673:669;;;17749:44;;:::i;:::-;17796:9;:19;17806:8;-1:-1:-1::0;;;;;17796:19:16::1;-1:-1:-1::0;;;;;17796:19:16::1;;;;;;;;;;;;:29;17816:8;-1:-1:-1::0;;;;;17796:29:16::1;-1:-1:-1::0;;;;;17796:29:16::1;;;;;;;;;;;;17826:1;17796:32;;;;;;;;;;;;;;;;;;17749:79;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;17749:79:16::1;-1:-1:-1::0;;;;;17749:79:16::1;-1:-1:-1::0;;;;;17749:79:16::1;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;17749:79:16::1;-1:-1:-1::0;;;;;17749:79:16::1;-1:-1:-1::0;;;;;17749:79:16::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;17890:1;17846:17;:33;17864:8;:14;;;-1:-1:-1::0;;;;;17846:33:16::1;-1:-1:-1::0;;;;;17846:33:16::1;;;;;;;;;;;;:43;17880:8;-1:-1:-1::0;;;;;17846:43:16::1;-1:-1:-1::0;;;;;17846:43:16::1;;;;;;;;;;;;;:45;17843:243;;;17911:147;17934:8;:14;;;17950:8;17960;17970:20;17992:19;18013:8;18023:14;18039:8;:18;;;17911:22;:147::i;:::-;18148:1;18103:17;:34;18121:8;:15;;;-1:-1:-1::0;;;;;18103:34:16::1;-1:-1:-1::0;;;;;18103:34:16::1;;;;;;;;;;;;:44;18138:8;-1:-1:-1::0;;;;;18103:44:16::1;-1:-1:-1::0;;;;;18103:44:16::1;;;;;;;;;;;;;:46;18100:231;;;18169:146;18193:8;:15;;;18210:8;18220;18230:18;18250:17;18269:9;18280:14;18296:8;:18;;;18169:23;:146::i;:::-;-1:-1:-1::0;17730:3:16::1;;17673:669;;;;17383:1447:::0;;;;;;;;;;;;:::o;10922:2426::-;4357:7;;11133:10;;-1:-1:-1;;;;;4357:7:16;4349:15;;4341:46;;;;-1:-1:-1;;;4341:46:16;;;;;;;:::i;:::-;11156:31:::1;;:::i;:::-;-1:-1:-1::0;;;;;11222:15:16;;::::1;;::::0;;;:5:::1;:15;::::0;;;;;;;:25;;::::1;::::0;;;;;;;;;11203:60;;-1:-1:-1;;;11203:60:16;;;;11222:25;::::1;::::0;11203:58:::1;::::0;:60:::1;::::0;;::::1;::::0;11222:15;11203:60;;;;;;11222:25;11203:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11190:83:16::1;;11274:8;11190:93;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11380:15:16;;::::1;11294:24;11380:15:::0;;;:5:::1;:15;::::0;;;;;;;:25;;::::1;::::0;;;;;;;;11361:57;;-1:-1:-1;;;11361:57:16;;;;11156:127;;-1:-1:-1;11294:24:16;;11321:239:::1;::::0;11330:89:::1;::::0;11349:10;;11380:25;::::1;::::0;11361:55:::1;::::0;:57:::1;::::0;;::::1;::::0;11380:15;11361:57;;;;;11380:25;11361:57;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11330:18;:89::i;:::-;-1:-1:-1::0;;;;;11516:15:16;;::::1;;::::0;;;:5:::1;:15;::::0;;;;;;;:25;;::::1;::::0;;;;;;;;;11497:61;;-1:-1:-1;;;11497:61:16;;;;11466:93:::1;::::0;11485:10;;11516:25;::::1;::::0;11497:59:::1;::::0;:61:::1;::::0;;::::1;::::0;;;;;;;11516:25;11497:61;::::1;;::::0;::::1;;;;::::0;::::1;11466:93;11321:8;:239::i;:::-;11294:266;;11716:55;11730:5;11737;11744:8;11754:16;11716:13;:55::i;:::-;11713:1628;;;11828:8;-1:-1:-1::0;;;;;11795:107:16::1;;11807:5;11814:12;11838:14;11854:8;11864:10;11876:8;11886:15;11795:107;;;;;;;;;;;;:::i;:::-;;;;;;;;11935:8;-1:-1:-1::0;;;;;11920:23:16::1;:5;:13;;;-1:-1:-1::0;;;;;11920:23:16::1;;:45;;;;;11960:5;-1:-1:-1::0;;;;;11947:18:16::1;:5;:11;;;-1:-1:-1::0;;;;;11947:18:16::1;;11920:45;11917:301;;;-1:-1:-1::0;;;;;12031:24:16;;::::1;;::::0;;;:17:::1;:24;::::0;;;;;;;:34;;::::1;::::0;;;;;;;12022:67:::1;::::0;12071:16;12022:8:::1;:67::i;:::-;-1:-1:-1::0;;;;;11985:24:16;;::::1;;::::0;;;:17:::1;:24;::::0;;;;;;;:34;;::::1;::::0;;;;;;;;:104;;;12113:89;;11985:24;;-1:-1:-1;;;;;;;;;;;12113:89:16;::::1;::::0;11985:34;;12186:15:::1;::::0;12113:89:::1;:::i;:::-;;;;;;;;11917:301;12269:13;12297:14:::0;12344:8:::1;-1:-1:-1::0;;;;;12329:23:16::1;:5;:13;;;-1:-1:-1::0;;;;;12329:23:16::1;;12326:274;;;-1:-1:-1::0;12392:5:16;;-1:-1:-1;12425:12:16;12326:274:::1;;;12490:8;-1:-1:-1::0;;;;;12475:23:16::1;:5;:13;;;-1:-1:-1::0;;;;;12475:23:16::1;;12472:128;;;-1:-1:-1::0;12539:12:16;;-1:-1:-1;12579:5:16;12472:128:::1;12614:44;;:::i;:::-;12661:535;;;;;;;;12919:5;-1:-1:-1::0;;;;;12661:535:16::1;;;;;12952:6;-1:-1:-1::0;;;;;12661:535:16::1;;;;;12994:14;12661:535;;;;13040:10;12661:535;;;;13086:8;12661:535;;;;13132:16;12661:535;;;;13179:1;12661:535;;::::0;12614:582:::1;;13211:9;:19;13221:8;-1:-1:-1::0;;;;;13211:19:16::1;-1:-1:-1::0;;;;;13211:19:16::1;;;;;;;;;;;;:29;13231:8;-1:-1:-1::0;;;;;13211:29:16::1;-1:-1:-1::0;;;;;13211:29:16::1;;;;;;;;;;;;13246:8;13211:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;13211:44:16::1;;;;;-1:-1:-1::0;;;;;13211:44:16::1;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;13211:44:16::1;;;;;-1:-1:-1::0;;;;;13211:44:16::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13328:1;13289:9;:19;13299:8;-1:-1:-1::0;;;;;13289:19:16::1;-1:-1:-1::0;;;;;13289:19:16::1;;;;;;;;;;;;:29;13309:8;-1:-1:-1::0;;;;;13289:29:16::1;-1:-1:-1::0;;;;;13289:29:16::1;;;;;;;;;;;;:36;;;;:40;13270:6;:16;13277:8;13270:16;;;;;;;;;;;:59;;;;11713:1628;;;;4398:1;;10922:2426:::0;;;;;;;;:::o;25385:446::-;25498:13;;25459:7;;-1:-1:-1;;;;;25498:13:16;25486:10;:25;25478:69;;;;-1:-1:-1;;;25478:69:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;25581:12:16;;25558:20;25581:12;;;:4;:12;;;;;;25619:36;25581:12;;25619:8;:36::i;:::-;-1:-1:-1;;;;;25604:12:16;;;;;;;:4;:12;;;;;;;:51;;;;25690:13;;25666:52;;-1:-1:-1;;;25666:52:16;;25604:12;;25666:23;;:52;;25690:13;;;25705:12;;25666:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25756:4;-1:-1:-1;;;;;25734:59:16;;25763:12;25777:15;25734:59;;;;;;;:::i;:::-;;;;;;;;25811:12;-1:-1:-1;25385:446:16;;;;:::o;5029:1339::-;4054:16;;;:32;;-1:-1:-1;;;4054:32:16;;5322:10;;5334:8;;4041:10;;-1:-1:-1;;;;;4054:16:16;;;;:22;;:32;;5334:8;;4054:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4041:45;;4109:6;-1:-1:-1;;;;;4105:10:16;:2;-1:-1:-1;;;;;4105:10:16;;4097:42;;;;-1:-1:-1;;;4097:42:16;;;;;;;:::i;:::-;5363:38:::1;::::0;-1:-1:-1;;;5363:38:16;;5403:14;;-1:-1:-1;;;;;5363:26:16;::::1;::::0;::::1;::::0;:38:::1;::::0;5390:10:::1;::::0;5363:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;:126;;;;-1:-1:-1::0;5439:38:16::1;::::0;-1:-1:-1;;;5439:38:16;;5479:10;;-1:-1:-1;;;;;5439:26:16;::::1;::::0;::::1;::::0;:38:::1;::::0;5466:10:::1;::::0;5439:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:50;;5363:126;5355:164;;;;-1:-1:-1::0;;;5355:164:16::1;;;;;;;:::i;:::-;5530:67;::::0;-1:-1:-1;;;5530:67:16;;-1:-1:-1;;;;;5530:28:16;::::1;::::0;::::1;::::0;:67:::1;::::0;5559:10:::1;::::0;5579:4:::1;::::0;5586:10;;5530:67:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5608:71:16::1;::::0;-1:-1:-1;;;5608:71:16;;-1:-1:-1;;;;;5608:28:16;::::1;::::0;::::1;::::0;:71:::1;::::0;5637:10:::1;::::0;5657:4:::1;::::0;5664:14;;5608:71:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5702:8;-1:-1:-1::0;;;;;5692:29:16::1;;5722:6;;;;;;;;;-1:-1:-1::0;;;;;5722:6:16::1;5730:14;5692:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5762:61;;:::i;:::-;5826:429;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;5826:429:16::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;5826:429:16::1;;::::0;::::1;;;;5968:8;-1:-1:-1::0;;;;;5826:429:16::1;;;;;6005:12;5826:429;;;;6043:8;-1:-1:-1::0;;;;;5826:429:16::1;;;;;6075:7;5826:429;;;;6112:16;5826:429;;;;6152:6;5826:429;;;;6185:14;5826:429;;;;6235:8;5826:429;;::::0;5762:493:::1;;6270:82;6281:10;6293:8;6303:14;6319:8;6329:10;6341;6270;:82::i;:::-;4150:1;5029:1339:::0;;;;;;;;;;;;;:::o;9279:838::-;9386:65;;-1:-1:-1;;;9386:65:16;;-1:-1:-1;;;;;9386:30:16;;;;;:65;;9417:10;;9437:4;;9444:6;;9386:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9462:21;9486:40;9515:9;9486:21;:40::i;:::-;9462:64;;9546:31;9555:6;9563:13;9546:8;:31::i;:::-;9671:10;9653:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;9653:40:16;;;;;;;;;;9537;;-1:-1:-1;9631:63:16;;9537:40;;9631:8;:63::i;:::-;9606:10;9588:29;;;;:17;:29;;;;;;;;-1:-1:-1;;;;;9588:40:16;;;;;;;;;:106;;;;9708:23;;;:11;:23;;;;;9705:136;;9750:7;:24;;;;;;;;;;;-1:-1:-1;;;;;;9750:24:16;9763:10;9750:24;;;;;;9815:14;;-1:-1:-1;9789:23:16;;;:11;9750:24;9789:23;;;;;:40;9705:136;-1:-1:-1;;;;;9868:22:16;;;9851:14;9868:22;;;:12;:22;;;;;;;;;9948:24;;;:16;:24;;;;;:35;;;;;;;;;;;;9939:53;;9985:6;9939:8;:53::i;:::-;9901:24;;;;:16;:24;;;;;;;;-1:-1:-1;;;;;9901:35:16;;;;;;;;;;;:91;;;;10028:10;10051:29;;;:17;:29;;;;;:40;;;;;;;;;;;;10008:101;;-1:-1:-1;;;;;;;;;;;10008:101:16;;;9926:9;;10051:40;10093:15;;10008:101;:::i;:::-;;;;;;;;9279:838;;;;;:::o;13744:2374::-;4357:7;;13924:10;;-1:-1:-1;;;;;4357:7:16;4349:15;;4341:46;;;;-1:-1:-1;;;4341:46:16;;;;;;;:::i;:::-;13950:17;;;::::1;::::0;:38:::1;;-1:-1:-1::0;13971:17:16;;::::1;13950:38;13947:2164;;;-1:-1:-1::0;;;;;14101:15:16;;::::1;14074:11;14101:15:::0;;;:5:::1;:15;::::0;;;;;;;:25;;::::1;::::0;;;;;;;;14074:11;;14088:65:::1;::::0;14101:25:::1;14117:8:::0;14138:14;14088:12:::1;:65::i;:::-;-1:-1:-1::0;;;;;14207:15:16;;::::1;14168:17;14207:15:::0;;;:5:::1;:15;::::0;;;;;;;:25;;::::1;::::0;;;;;;;;14188:60;;-1:-1:-1;;;14188:60:16;;;;14074:79;;-1:-1:-1;14168:17:16;;14207:25;;;::::1;::::0;14188:58:::1;::::0;:60:::1;::::0;;::::1;::::0;14207:15;14188:60;;;;;14207:25;14188:60;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14168:80;;14263:13;14326:8;-1:-1:-1::0;;;;;14279:55:16::1;14292:9;-1:-1:-1::0;;;;;14279:32:16::1;;14312:3;14279:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45:::0;-1:-1:-1;;;;;14279:55:16::1;;:231;;14466:38;::::0;-1:-1:-1;;;14466:38:16;;-1:-1:-1;;;;;14466:32:16;::::1;::::0;::::1;::::0;:38:::1;::::0;14499:4;;14466:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;14279:231;;;14379:37;::::0;-1:-1:-1;;;14379:37:16;;-1:-1:-1;;;;;14379:32:16;::::1;::::0;::::1;::::0;:37:::1;::::0;14412:3;;14379:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;14279:231;14525:95;::::0;-1:-1:-1;;;14525:95:16;;14263:247;;-1:-1:-1;;;;;;14525:35:16;::::1;::::0;::::1;::::0;:95:::1;::::0;14561:3;;14566:4;;14572:14;;14588;;14604:15:::1;::::0;14525:95:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14635:77;14647:9;14658:3;14663:4;14669:14;14685;14701:5;14708:3;14635:11;:77::i;:::-;14727:11;14741::::0;;;:6:::1;:11;::::0;;;;;;;;-1:-1:-1;;;;;14890:19:16;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;;:34;;14937:13;;14890:29;14741:11;;14890:34;::::1;;;;;;::::0;;;::::1;::::0;;;:44:::1;:34;::::0;;::::1;;:44:::0;;;::::1;:60:::0;;;;14971:12;;;:6:::1;:12:::0;;;;;;;-1:-1:-1;;;;;15060:19:16;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;:34;;14971:12;;-1:-1:-1;15107:13:16;;14971:12;;15060:34;::::1;;;;;;;;;;;;;;;:44;;:60;;;;13947:2164;;;;;;;15204:44;;:::i;:::-;15263:11;15277::::0;;;:6:::1;:11;::::0;;;;;;;;-1:-1:-1;;;;;15314:19:16;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;;:34;;15277:11;;15314:34;::::1;;;;;;::::0;;;::::1;::::0;;;15303:45:::1;::::0;;::::1;::::0;::::1;::::0;;15314:34:::1;::::0;;::::1;::::0;;::::1;15303:45:::0;;-1:-1:-1;;;;;15303:45:16;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;;;;15418:33;;:17:::1;:33:::0;;;;;:43;;::::1;::::0;;;;;;;;;15467:25;;15303:45;;-1:-1:-1;15409:85:16::1;::::0;15418:43;15409:8:::1;:85::i;:::-;15381:14:::0;;-1:-1:-1;;;;;15363:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;;;:131;;;;15516:19;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;;;;;;;;:34;;15546:3;;15516:34;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;15509:41:::0;;-1:-1:-1;;;;;;15509:41:16;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;15590:14;;-1:-1:-1;;;;;15570:107:16;;::::1;15616:33:::0;;;:17:::1;:33:::0;;;;;;:43;;::::1;::::0;;;;;;;;;;;15570:107;;;;-1:-1:-1;;;;;;;;;;;15570:107:16;::::1;::::0;15606:8;;15661:15:::1;::::0;15570:107:::1;:::i;:::-;;;;;;;;-1:-1:-1::0;15698:12:16::1;::::0;;;:6:::1;:12;::::0;;;;;;;;-1:-1:-1;;;;;15736:19:16;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;::::1;::::0;;;;;;;;:34;;15698:12;;15736:34;::::1;;;;;;::::0;;;::::1;::::0;;;15725:45:::1;::::0;;::::1;::::0;::::1;::::0;;15736:34:::1;::::0;;::::1;::::0;;::::1;15725:45:::0;;-1:-1:-1;;;;;15725:45:16;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;::::1;::::0;;;;;15840:33;;:17:::1;:33:::0;;;;;:43;;::::1;::::0;;;;;;;;;15889:25;;15725:45;;-1:-1:-1;15831:85:16::1;::::0;15840:43;15831:8:::1;:85::i;:::-;15803:14:::0;;-1:-1:-1;;;;;15785:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;;;:131;;;;15938:19;;::::1;::::0;;:9:::1;:19:::0;;;;;:29;;;;;;;;;:34;;15968:3;;15938:34;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;::::1;15931:41:::0;;-1:-1:-1;;;;;;15931:41:16;;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;;::::0;;;16012:14;;-1:-1:-1;;;;;15992:107:16;;::::1;16038:33:::0;;;:17:::1;:33:::0;;;;;;:43;;::::1;::::0;;;;;;;;;;;15992:107;;;;-1:-1:-1;;;;;;;;;;;15992:107:16;::::1;::::0;16028:8;;16083:15:::1;::::0;15992:107:::1;:::i;:::-;;;;;;;;13947:2164;;;13744:2374:::0;;;;;;;;:::o;10588:156::-;10676:7;10702:24;;;:16;:24;;;;;;;;-1:-1:-1;;;;;10702:34:16;;;;;;;;;;;;;10588:156::o;1777:145:9:-;1358:59;1378:10;1367:7;:5;:7::i;:::-;-1:-1:-1;;;;;1367:21:9;;9498:3:0;1358:8:9;:59::i;:::-;1883:1:::1;1867:6:::0;;1846:40:::1;::::0;-1:-1:-1;;;;;1867:6:9;;::::1;::::0;1846:40:::1;::::0;1883:1;;1846:40:::1;1913:1;1896:19:::0;;-1:-1:-1;;;;;;1896:19:9::1;::::0;;1777:145::o;8144:1123:16:-;4054:16;;;:32;;-1:-1:-1;;;4054:32:16;;8230:10;;8242:8;;4041:10;;-1:-1:-1;;;;;4054:16:16;;;;:22;;:32;;8242:8;;4054:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4041:45;;4109:6;-1:-1:-1;;;;;4105:10:16;:2;-1:-1:-1;;;;;4105:10:16;;4097:42;;;;-1:-1:-1;;;4097:42:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;8406:22:16;;::::1;8389:14;8406:22:::0;;;:12:::1;:22;::::0;;;;;;;8477:6:::1;::::0;8470:36;;-1:-1:-1;;;8470:36:16;;8406:22;;8440::::1;::::0;8477:6:::1;::::0;8470:28:::1;::::0;:36:::1;::::0;8406:22;;8470:36:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8470:36:16::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;8439:67;;;;8517:22;8542:30;8565:6;8542:22;:30::i;:::-;8517:55;;8583:27;8627:6;:13;8613:28;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;8613:28:16::1;;8583:58;;8652:37;;:::i;:::-;8692:219;;;;;;;;8738:6;8692:219;;;;8774:10;8692:219;;;;8820:36;8858:1;8809:51;;;;;;;;;:::i;:::-;;::::0;;;;::::1;-1:-1:-1::0;;8809:51:16;;;;;;8692:219;;;8894:5:::1;8809:51;8692:219:::0;;::::1;::::0;;;;8938:6:::1;::::0;8931:79;;-1:-1:-1;;;8931:79:16;;8652:259;;-1:-1:-1;;;;;;8938:6:16::1;::::0;8931:23:::1;::::0;:79:::1;::::0;8955:6;;8971:4:::1;::::0;;;8652:259;;8931:79:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9035:6;9026:43;9043:8;9053:15;9026:43;;;;;;;:::i;:::-;;;;;;;;9106:14;::::0;;;:6:::1;:14;::::0;;;;;;;9122:41;;-1:-1:-1;;;9122:41:16;;-1:-1:-1;;;;;9080:25:16;;::::1;::::0;::::1;::::0;9106:14;::::1;::::0;9080:25;;9122:26:::1;::::0;:41:::1;::::0;9157:4:::1;::::0;9122:41:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9080:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;9201:14:16::1;::::0;;;:6:::1;:14;::::0;;;;;;;9217:41;;-1:-1:-1;;;9217:41:16;;-1:-1:-1;;;;;9175:25:16;;::::1;::::0;::::1;::::0;9201:14;::::1;::::0;9175:25;;9217:26:::1;::::0;:41:::1;::::0;9252:4:::1;::::0;9217:41:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9175:84;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4150:1;;;;;8144:1123:::0;;;;;:::o;1154:85:9:-;1200:7;1226:6;-1:-1:-1;;;;;1226:6:9;1154:85;:::o;4739:87:16:-;1358:59:9;1378:10;1367:7;:5;:7::i;1358:59::-;4802:7:16::1;:16:::0;;-1:-1:-1;;;;;;4802:16:16::1;-1:-1:-1::0;;;;;4802:16:16;;;::::1;::::0;;;::::1;::::0;;4739:87::o;10125:455::-;4054:16;;;:32;;-1:-1:-1;;;4054:32:16;;10237:10;;10249:8;;4041:10;;-1:-1:-1;;;;;4054:16:16;;;;:22;;:32;;10249:8;;4054:32;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4041:45;;4109:6;-1:-1:-1;;;;;4105:10:16;:2;-1:-1:-1;;;;;4105:10:16;;4097:42;;;;-1:-1:-1;;;4097:42:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;10286:22:16;;::::1;10269:14;10286:22:::0;;;:12:::1;:22;::::0;;;;;;;;10327:24;;;:16:::1;:24:::0;;;;;:35;;::::1;::::0;;;;;;;;;:45;-1:-1:-1;10327:45:16::1;10319:90;;;;-1:-1:-1::0;;;10319:90:16::1;;;;;;;:::i;:::-;10467:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;10467:35:16;::::1;::::0;;;;;;;;10458:53:::1;::::0;10504:6;10458:8:::1;:53::i;:::-;10420:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;10420:35:16;;::::1;::::0;;;;;;;;;:91;;;;10549:14;;;:6:::1;:14:::0;;;;;;;;10522:50;;-1:-1:-1;;;10522:50:16;;10420:35;;10522:26:::1;::::0;:50:::1;::::0;10549:14;::::1;::::0;10565:6;;10522:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10752:158::-:0;-1:-1:-1;;;;;10868:24:16;;;10843:6;10868:24;;;:17;:24;;;;;;;;:34;;;;;;;;;;;;;10752:158::o;22159:3218::-;22258:10;4221:19;;;;:11;:19;;;;;;4213:54;;;;-1:-1:-1;;;4213:54:16;;;;;;;:::i;:::-;-1:-1:-1;;;;;22297:22:16;::::1;22280:14;22297:22:::0;;;:12:::1;:22;::::0;;;;;;22330:3040:::1;-1:-1:-1::0;;;;;22349:19:16;;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;:36;22347:38;::::1;22330:3040;;;22406:44;;:::i;:::-;-1:-1:-1::0;;;;;22453:19:16;;::::1;;::::0;;;:9:::1;:19;::::0;;;;;;;:29;;::::1;::::0;;;;;;:32;;22483:1;;22453:32;::::1;;;;;;::::0;;;::::1;::::0;;;;22406:79:::1;::::0;;::::1;::::0;::::1;::::0;;22453:32:::1;::::0;;::::1;::::0;;::::1;22406:79:::0;;-1:-1:-1;;;;;22406:79:16;;::::1;::::0;;;;;::::1;::::0;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;;::::0;;;;;;-1:-1:-1;22519:10:16::1;22503:26;:75:::0;::::1;;;-1:-1:-1::0;22551:14:16;;-1:-1:-1;;;;;22533:33:16;;::::1;22577:1;22533:33:::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;;;:45:::1;22503:75;22500:2859;;;22634:14:::0;;-1:-1:-1;;;;;22616:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;22601:58;::::1;22598:1202;;22709:14:::0;;-1:-1:-1;;;;;22730:33:16;;::::1;22709:14;22730:33:::0;;;:17:::1;:33;::::0;;;;;;;22683:25;;::::1;22730:43:::0;;;;;;;;;;;;22683:92;;-1:-1:-1;;;22683:92:16;;:25;;::::1;::::0;:92:::1;::::0;22730:43;22683:92:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;22844:24:16::1;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;22844:34:16;;::::1;::::0;;;;;;;;;;22903:14;;22885:33;;::::1;::::0;;:17:::1;:33:::0;;;;;:43;;;;;;;;;22835:95:::1;::::0;22844:34;22835:8:::1;:95::i;:::-;22798:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;22798:34:16;;::::1;::::0;;;;;;;;;:132;;;;22982:14;;22958:111;;::::1;23008:33:::0;;;:17:::1;:33:::0;;;;;:43;;;;;;;;;;;;22958:111;;-1:-1:-1;;;;;;;;;;;22958:111:16;::::1;::::0;22823:8;;23008:43;23053:15:::1;::::0;22958:111:::1;:::i;:::-;;;;;;;;23141:14:::0;;-1:-1:-1;;;;;23123:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;23101:67:::1;::::0;23110:6;;23101:8:::1;:67::i;:::-;23209:14:::0;;-1:-1:-1;;;;;23191:33:16;;::::1;23237:1;23191:33:::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;;:47;23092:76;-1:-1:-1;22598:1202:16::1;;;23349:14:::0;;23323:49:::1;::::0;-1:-1:-1;;;23323:49:16;;-1:-1:-1;;;;;23323:25:16;::::1;::::0;::::1;::::0;:49:::1;::::0;23349:14;23365:6;;23323:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23441:24:16::1;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;23441:34:16;::::1;::::0;;;;;;;;23432:52:::1;::::0;23477:6;23432:8:::1;:52::i;:::-;23395:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;23395:34:16;;::::1;::::0;;;;;;;;:89;;;;23539:14;;23515:79;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;23515:79:16;::::1;::::0;23420:8;;23569:6;;23578:15:::1;::::0;23515:79:::1;:::i;:::-;;;;;;;;23707:14:::0;;-1:-1:-1;;;;;23689:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;23680:66:::1;::::0;23738:6;23680:8:::1;:66::i;:::-;23652:14:::0;;-1:-1:-1;;;;;23634:33:16;;::::1;;::::0;;;:17:::1;:33;::::0;;;;;;;:43;;::::1;::::0;;;;;;;;:112;;;;:33;-1:-1:-1;22598:1202:16::1;22500:2859;;;23943:15;::::0;::::1;::::0;-1:-1:-1;;;;;23943:27:16::1;23960:10;23943:27;:77:::0;::::1;;;-1:-1:-1::0;23992:15:16::1;::::0;;::::1;::::0;-1:-1:-1;;;;;23974:34:16;;::::1;24019:1;23974:34:::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;;:46:::1;23943:77;23940:1419;;;24076:15;::::0;;::::1;::::0;-1:-1:-1;;;;;24058:34:16;;::::1;;::::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;;24043:59;::::1;24040:1214;;24152:15;::::0;;::::1;::::0;-1:-1:-1;;;;;24174:34:16;;::::1;;::::0;;;:17:::1;:34:::0;;;;;;24126:25;;::::1;24174:44:::0;;;;;;;;;;;24126:94;;-1:-1:-1;;;24126:94:16;;:25;;::::1;::::0;:94:::1;::::0;24152:15;;24174:44;24126:94:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24289:24:16::1;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;24289:34:16;;::::1;::::0;;;;;;;;;;24348:15;;::::1;::::0;24330:34;;::::1;::::0;;:17:::1;:34:::0;;;;;:44;;;;;;;;;24280:96:::1;::::0;24289:34;24280:8:::1;:96::i;:::-;24243:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;24243:34:16;;::::1;::::0;;;;;;;;;:133;;;;24428:15;;::::1;::::0;24404:113;;::::1;24455:34:::0;;;:17:::1;:34:::0;;;;;:44;;;;;;;;;;;;24404:113;;-1:-1:-1;;;;;;;;;;;24404:113:16;::::1;::::0;24268:8;;24455:44;24501:15:::1;::::0;24404:113:::1;:::i;:::-;;;;;;;;24589:15;::::0;;::::1;::::0;-1:-1:-1;;;;;24571:34:16;;::::1;;::::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;;24549:68:::1;::::0;24558:6;;24549:8:::1;:68::i;:::-;24658:15;::::0;;::::1;::::0;-1:-1:-1;;;;;24640:34:16;;::::1;24687:1;24640:34:::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;:48;24540:77;-1:-1:-1;24040:1214:16::1;;;24799:15;::::0;::::1;::::0;24773:50:::1;::::0;-1:-1:-1;;;24773:50:16;;-1:-1:-1;;;;;24773:25:16;::::1;::::0;::::1;::::0;:50:::1;::::0;24799:15;24816:6;;24773:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;24892:24:16::1;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;24892:34:16;::::1;::::0;;;;;;;;24883:52:::1;::::0;24928:6;24883:8:::1;:52::i;:::-;24846:24;::::0;;;:16:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;24846:34:16;;::::1;::::0;;;;;;;;;:89;;;;24990:15;::::1;::::0;24966:80;;;::::1;::::0;-1:-1:-1;;;;;;;;;;;24966:80:16;::::1;::::0;24871:8;;25021:6;;25030:15:::1;::::0;24966:80:::1;:::i;:::-;;;;;;;;25160:15;::::0;;::::1;::::0;-1:-1:-1;;;;;25142:34:16;;::::1;;::::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;;25133:67:::1;::::0;25192:6;25133:8:::1;:67::i;:::-;25104:15;::::0;;::::1;::::0;-1:-1:-1;;;;;25086:34:16;;::::1;;::::0;;;:17:::1;:34:::0;;;;;;:44;;::::1;::::0;;;;;;;;:114;;;;:34;-1:-1:-1;24040:1214:16::1;-1:-1:-1::0;22387:3:16::1;;22330:3040;;;;4278:1;22159:3218:::0;;;;:::o;2071:225:9:-;1358:59;1378:10;1367:7;:5;:7::i;1358:59::-;2151:58:::1;-1:-1:-1::0;;;;;2160:22:9;::::1;::::0;::::1;9553:3:0;2151:8:9;:58::i;:::-;2245:6;::::0;;2224:38:::1;::::0;-1:-1:-1;;;;;2224:38:9;;::::1;::::0;2245:6;::::1;::::0;2224:38:::1;::::0;::::1;2272:6;:17:::0;;-1:-1:-1;;;;;;2272:17:9::1;-1:-1:-1::0;;;;;2272:17:9;;;::::1;::::0;;;::::1;::::0;;2071:225::o;4834:187:16:-;4898:4;4917:14;;;:6;:14;;;;;;-1:-1:-1;;;;;4917:14:16;4914:99;;-1:-1:-1;4968:5:16;4961:12;;4914:99;-1:-1:-1;5009:4:16;5002:11;;4416:315;1358:59:9;1378:10;1367:7;:5;:7::i;1358:59::-;4547:12:16::1;:26:::0;;-1:-1:-1;;;;;;4547:26:16;;::::1;-1:-1:-1::0;;;;;4547:26:16;;::::1;;::::0;;;4584:6:::1;:14:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;4609:16:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;4664:13:::1;:28:::0;;;::::1;::::0;;;::::1;;::::0;;;4703:7:::1;:20:::0;;4713:10:::1;4703:20:::0;::::1;::::0;;;::::1;::::0;;4416:315::o;18842:1659::-;19086:1;19063:20;:24;19060:388;;;-1:-1:-1;;;;;19147:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;19138:108;;19209:35;19218:14;19234:9;19209:8;:35::i;:::-;19182:20;:63;19138:8;:108::i;:::-;-1:-1:-1;;;;;19102:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:144;19060:388;;;19288:1;19265:20;:24;19262:186;;;-1:-1:-1;;;;;19349:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;19340:108;;19411:35;19420:14;19436:9;19411:8;:35::i;:::-;19384:20;:63;19340:8;:108::i;:::-;-1:-1:-1;;;;;19304:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:144;19262:186;19484:1;19462:19;:23;19459:384;;;-1:-1:-1;;;;;19545:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;19536:107;;19606:35;19615:14;19631:9;19606:8;:35::i;:::-;19580:19;:62;19536:8;:107::i;:::-;-1:-1:-1;;;;;19500:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:143;19459:384;;;19684:1;19662:19;:23;19659:184;;;-1:-1:-1;;;;;19745:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;19736:107;;19806:35;19815:14;19831:9;19806:8;:35::i;:::-;19780:19;:62;19736:8;:107::i;:::-;-1:-1:-1;;;;;19700:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:143;19659:184;19868:1;19857:8;:12;19854:340;;;-1:-1:-1;;;;;19929:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;19920:96;;19979:35;19988:14;20004:9;19979:8;:35::i;:::-;19964:8;:51;19920:8;:96::i;:::-;-1:-1:-1;;;;;19884:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:132;19854:340;;;20046:1;20035:8;:12;20032:162;;;-1:-1:-1;;;;;20107:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;20098:96;;20157:35;20166:14;20182:9;20157:8;:35::i;:::-;20142:8;:51;20098:8;:96::i;:::-;-1:-1:-1;;;;;20062:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:132;20032:162;20269:4;-1:-1:-1;;;;;20258:235:16;;20275:8;20285;20322:35;20331:14;20347:9;20322:8;:35::i;:::-;20295:20;:63;20386:35;20395:14;20411:9;20386:8;:35::i;:::-;20360:19;:62;20439:35;20448:14;20464:9;20439:8;:35::i;:::-;20424:8;:51;20477:15;20258:235;;;;;;;;;;;:::i;:::-;;;;;;;;18842:1659;;;;;;;;:::o;20509:1642::-;20749:1;20728:18;:22;20725:380;;;-1:-1:-1;;;;;20810:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;20801:106;;20870:35;20879:14;20895:9;20870:8;:35::i;20801:106::-;-1:-1:-1;;;;;20765:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:142;20725:380;;;20947:1;20926:18;:22;20923:182;;;-1:-1:-1;;;;;21008:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;20999:106;;21068:35;21077:14;21093:9;21068:8;:35::i;20999:106::-;-1:-1:-1;;;;;20963:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:142;20923:182;21139:1;21119:17;:21;21116:376;;;-1:-1:-1;;;;;21200:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;21191:105;;21259:35;21268:14;21284:9;21259:8;:35::i;21191:105::-;-1:-1:-1;;;;;21155:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:141;21116:376;;;21335:1;21315:17;:21;21312:180;;;-1:-1:-1;;;;;21396:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;21387:105;;21455:35;21464:14;21480:9;21455:8;:35::i;21387:105::-;-1:-1:-1;;;;;21351:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;:141;21312:180;21518:1;21506:9;:13;21503:344;;;-1:-1:-1;;;;;21579:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;21570:97;;21630:35;21639:14;21655:9;21630:8;:35::i;21503:344::-;21698:1;21686:9;:13;21683:164;;;-1:-1:-1;;;;;21759:23:16;;;;;;;:17;:23;;;;;;;;:33;;;;;;;;;;21750:97;;21810:35;21819:14;21835:9;21810:8;:35::i;1647:209:3:-;1709:7;1746:5;;;1761:57;1770:6;;;:26;;;1795:1;1790;1780:7;:11;;;;;;:16;1770:26;4467:1:0;1761:8:3;:57::i;:::-;893:4;1836:13;;;;-1:-1:-1;;;1647:209:3:o;367:166:5:-;425:7;456:5;;;471:37;480:6;;;;425:7;471:8;:37::i;:::-;525:1;367:166;-1:-1:-1;;;367:166:5:o;13360:376:16:-;13496:4;13530:8;-1:-1:-1;;;;;13515:23:16;:5;:13;;;-1:-1:-1;;;;;13515:23:16;;13512:195;;;-1:-1:-1;;;;;13557:24:16;;;;;;;:17;:24;;;;;;;;:34;;;;;;;;;;:59;-1:-1:-1;13554:141:16;;-1:-1:-1;13642:4:16;13635:11;;13554:141;-1:-1:-1;13690:5:16;13683:12;;13554:141;-1:-1:-1;13724:4:16;13360:376;;;;;;;:::o;1219:194:5:-;1275:6;1304:5;;;1319:69;1329:6;;;;;;:16;;;1344:1;1339;:6;;1329:16;1328:38;;;;1355:1;1351;:5;:14;;;;;1364:1;1360;:5;1351:14;4370:1:0;1319:8:5;:69::i;948:166::-;1006:7;1025:37;1039:1;1034;:6;;4370:1:0;1025:8:5;:37::i;:::-;-1:-1:-1;1084:5:5;;;948:166::o;6376:536:16:-;6629:12;;6603:58;;-1:-1:-1;;;6603:58:16;;-1:-1:-1;;;;;6629:12:16;;;;6603:46;;:58;;6650:10;;6603:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6575:15:16;;;;;;;:5;:15;;;;;;;;:25;;;;;;;;;;:86;;-1:-1:-1;;;;;;6575:86:16;;;;;;;;;;;;6692:57;;-1:-1:-1;;;6692:57:16;;;;6575:15;;6711:25;;;;6692:55;;:57;;;;;6575:15;6692:57;;;;;6711:25;6692:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6762:22:16;;;;;;;:12;:22;;;;;;;;:31;;;6805:14;;;:6;:14;;;;;:24;;-1:-1:-1;;;;;;6805:24:16;;;;;;;;;;6762:31;-1:-1:-1;6840:64:16;6762:22;6859:8;6869:14;6885:10;6762:31;6840:8;:64::i;:::-;6376:536;;;;;;;:::o;26367:424::-;26435:7;26536:21;26574:5;-1:-1:-1;;;;;26560:30:16;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26536:56;;;;26670:26;26699:27;26708:2;26712:13;26699:8;:27::i;:::-;26761:2;:22;893:4:3;26744:39:16;;;-1:-1:-1;;;;26367:424:16:o;26799:164::-;26879:7;26914:41;26933:6;26941:13;26914:18;:41::i;635:194:5:-;691:6;720:5;;;735:69;745:6;;;;;;:16;;;760:1;755;:6;;745:16;744:38;;;;771:1;767;:5;:14;;;;;780:1;776;:5;767:14;4322:1:0;735:8:5;:69::i;16912:463:16:-;17006:7;17025:11;17058:4;-1:-1:-1;;;;;17039:31:16;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17025:47;;17089:39;17108:14;17124:3;17089:18;:39::i;:::-;-1:-1:-1;;;;;17326:14:16;;;;;;:4;:14;;;;;;17083:45;;-1:-1:-1;17317:29:16;;17083:45;17317:8;:29::i;:::-;-1:-1:-1;;;;;17300:14:16;;;;;;:4;:14;;;;;:46;17364:3;-1:-1:-1;16912:463:16;;;;;:::o;16126:770::-;16364:9;-1:-1:-1;;;;;16351:33:16;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16323:565;16446:5;-1:-1:-1;;;;;16401:50:16;16414:9;-1:-1:-1;;;;;16401:32:16;;16434:3;16401:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;-1:-1:-1;;;;;16401:50:16;;:209;;16567:37;;-1:-1:-1;;;16567:37:16;;-1:-1:-1;;;;;16567:32:16;;;;;:37;;16600:3;;16567:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;16401:209;;;16487:38;;-1:-1:-1;;;16487:38:16;;-1:-1:-1;;;;;16487:32:16;;;;;:38;;16520:4;;16487:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;;16401:209;16625:5;16645:14;16687:9;-1:-1:-1;;;;;16674:35:16;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16739:9;-1:-1:-1;;;;;16726:35:16;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16778:14;16807:4;16826:3;16844;16862:15;16323:565;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;16126:770;;;;;;;:::o;866:101:0:-;935:9;930:34;;946:18;954:9;946:7;:18::i;:::-;866:101;;:::o;25964:229:16:-;26169:6;26144:42::o;6920:1216::-;7138:6;;7131:36;;-1:-1:-1;;;7131:36:16;;7101:22;;-1:-1:-1;;;;;7138:6:16;;7131:28;;:36;;7160:6;;7131:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7131:36:16;;;;;;;;;;;;:::i;:::-;7100:67;;;;7178:22;7203:30;7226:6;7203:22;:30::i;:::-;7178:55;;7244:29;7290:6;:13;7276:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7276:28:16;-1:-1:-1;7339:6:16;;7315:43;;-1:-1:-1;;;7315:43:16;;7244:60;;-1:-1:-1;;;;;;7315:23:16;;;;;;:43;;7339:6;;7347:10;;7315:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7393:6:16;;7369:47;;-1:-1:-1;;;7369:47:16;;-1:-1:-1;;;;;7369:23:16;;;;;;:47;;7393:6;;;;7401:14;;7369:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7431:9;7427:351;7446:6;:13;7442:1;:17;7427:351;;;7502:8;-1:-1:-1;;;;;7484:27:16;:6;7491:1;7484:9;;;;;;;;;;;;;;-1:-1:-1;;;;;7484:27:16;;7481:285;;;7548:14;7530:12;7543:1;7530:15;;;;;;;;;;;;;:32;;;;;7481:285;;;7603:8;-1:-1:-1;;;;;7585:27:16;:6;7592:1;7585:9;;;;;;;;;;;;;;-1:-1:-1;;;;;7585:27:16;;7582:184;;;7649:10;7631:12;7644:1;7631:15;;;;;;;7582:184;7715:51;1266:12;1333:3;7715:8;:51::i;:::-;7697:12;7710:1;7697:15;;;;;;;;;;;;;:69;;;;;7582:184;7461:3;;7427:351;;;;7788:37;;:::i;:::-;7828:210;;;;;;;;7874:6;7828:210;;;;7909:12;7828:210;;;;7957:13;7972:12;7946:39;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;7946:39:16;;;;;;7828:210;;;8021:5;7946:39;7828:210;;;;;;;8065:6;;8058:70;;-1:-1:-1;;;8058:70:16;;7788:250;;-1:-1:-1;;;;;;8065:6:16;;8058:23;;:70;;8082:6;;8098:4;;;;7788:250;;8058:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1074:3172:0;-1:-1:-1;;;3588:3:0;3581:79;;;3799:66;3793:4;3786:80;3941:1;3935:4;3928:15;2999:73;2210:2;2243:18;;;2288;;;2215:4;2284:29;;;3040:1;3036:14;2195:18;;;;3025:26;;;;2336:18;;;;2383;;;2379:29;;;3057:2;3053:17;3021:50;;;;2999:73;2994:3;2990:83;4008:4;4001:26;4234:3;;4224:14;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1102:722::-;;1230:3;1223:4;1215:6;1211:17;1207:27;1197:2;;-1:-1;;1238:12;1197:2;1278:6;1272:13;1300:80;1315:64;1372:6;1315:64;:::i;:::-;1300:80;:::i;:::-;1408:21;;;1291:89;-1:-1;1452:4;1465:14;;;;1440:17;;;1554;;;1545:27;;;;1542:36;-1:-1;1539:2;;;1591:1;;1581:12;1539:2;1616:1;1601:217;1626:6;1623:1;1620:13;1601:217;;;4154:13;;1694:61;;1769:14;;;;1797;;;;1648:1;1641:9;1601:217;;;1605:14;;;;;1190:634;;;;:::o;4354:241::-;;4458:2;4446:9;4437:7;4433:23;4429:32;4426:2;;;-1:-1;;4464:12;4426:2;85:6;72:20;97:33;124:5;97:33;:::i;4602:263::-;;4717:2;4705:9;4696:7;4692:23;4688:32;4685:2;;;-1:-1;;4723:12;4685:2;226:6;220:13;238:33;265:5;238:33;:::i;4872:366::-;;;4993:2;4981:9;4972:7;4968:23;4964:32;4961:2;;;-1:-1;;4999:12;4961:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5051:63;-1:-1;5151:2;5190:22;;72:20;97:33;72:20;97:33;:::i;:::-;5159:63;;;;4955:283;;;;;:::o;5245:617::-;;;;;5400:3;5388:9;5379:7;5375:23;5371:33;5368:2;;;-1:-1;;5407:12;5368:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5459:63;-1:-1;5559:2;5598:22;;72:20;97:33;72:20;97:33;:::i;:::-;5567:63;-1:-1;5667:2;5706:22;;72:20;97:33;72:20;97:33;:::i;:::-;5675:63;-1:-1;5775:2;5814:22;;72:20;97:33;72:20;97:33;:::i;:::-;5362:500;;;;-1:-1;5362:500;;-1:-1;;5362:500::o;5869:995::-;;;;;;;;6075:3;6063:9;6054:7;6050:23;6046:33;6043:2;;;-1:-1;;6082:12;6043:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6134:63;-1:-1;6234:2;6273:22;;72:20;97:33;72:20;97:33;:::i;:::-;6242:63;-1:-1;6342:2;6381:22;;2034:20;;-1:-1;6450:2;6489:22;;72:20;97:33;72:20;97:33;:::i;:::-;6458:63;-1:-1;6558:3;6598:22;;4006:20;;-1:-1;6667:3;6707:22;;72:20;97:33;72:20;97:33;:::i;:::-;6676:63;;;;6776:3;6820:9;6816:22;4006:20;6785:63;;6037:827;;;;;;;;;;:::o;6871:1235::-;;;;;;;;;;7105:3;7093:9;7084:7;7080:23;7076:33;7073:2;;;-1:-1;;7112:12;7073:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;7164:63;-1:-1;7264:2;7303:22;;72:20;97:33;72:20;97:33;:::i;:::-;7067:1039;;7272:63;;-1:-1;;;;7372:2;7410:22;;2828:20;;7479:2;7517:22;;2828:20;;7586:3;7625:22;;2828:20;;-1:-1;7694:3;7733:22;;2828:20;;-1:-1;7802:3;7841:22;;2828:20;;-1:-1;7910:3;7949:22;;2828:20;;-1:-1;8018:3;8058:22;;;4006:20;;-1:-1;7067:1039::o;8113:491::-;;;;8251:2;8239:9;8230:7;8226:23;8222:32;8219:2;;;-1:-1;;8257:12;8219:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8309:63;-1:-1;8409:2;8448:22;;72:20;97:33;72:20;97:33;:::i;:::-;8213:391;;8417:63;;-1:-1;;;8517:2;8556:22;;;;4006:20;;8213:391::o;8611:1373::-;;;;;;;;;;;8868:3;8856:9;8847:7;8843:23;8839:33;8836:2;;;-1:-1;;8875:12;8836:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8927:63;-1:-1;9027:2;9066:22;;2034:20;;-1:-1;9135:2;9174:22;;72:20;97:33;72:20;97:33;:::i;:::-;8830:1154;;;;-1:-1;9143:63;;9243:2;9282:22;;2034:20;;-1:-1;9351:3;9391:22;;4006:20;;9460:3;9500:22;;4006:20;;-1:-1;9569:3;9609:22;;4006:20;;-1:-1;9678:3;9718:22;;4006:20;;-1:-1;9787:3;9827:22;;4006:20;;-1:-1;9896:3;9936:22;;;4006:20;;-1:-1;8830:1154;-1:-1;;8830:1154::o;9991:491::-;;;;10129:2;10117:9;10108:7;10104:23;10100:32;10097:2;;;-1:-1;;10135:12;10097:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;10187:63;-1:-1;10287:2;10326:22;;4006:20;;-1:-1;10395:2;10434:22;;72:20;97:33;72:20;97:33;:::i;:::-;10403:63;;;;10091:391;;;;;:::o;10489:823::-;;;;10703:2;10691:9;10682:7;10678:23;10674:32;10671:2;;;-1:-1;;10709:12;10671:2;10760:17;10754:24;10798:18;;10790:6;10787:30;10784:2;;;-1:-1;;10820:12;10784:2;10937:6;10926:9;10922:22;;;452:3;445:4;437:6;433:17;429:27;419:2;;-1:-1;;460:12;419:2;500:6;494:13;522:95;537:79;609:6;537:79;:::i;522:95::-;623:16;659:6;652:5;645:21;689:4;;706:3;702:14;695:21;;689:4;681:6;677:17;811:3;689:4;;795:6;791:17;681:6;782:27;;779:36;776:2;;;-1:-1;;818:12;776:2;-1:-1;844:10;;838:232;863:6;860:1;857:13;838:232;;;2344:6;2338:13;2356:48;2398:5;2356:48;:::i;:::-;931:76;;885:1;878:9;;;;;1021:14;;;;1049;;838:232;;;-1:-1;10997:18;;10991:25;10840:114;;-1:-1;10991:25;-1:-1;;;11025:30;;;11022:2;;;-1:-1;;11058:12;11022:2;;11088:89;11169:7;11160:6;11149:9;11145:22;11088:89;:::i;:::-;11078:99;;;11214:2;11268:9;11264:22;4154:13;11222:74;;10665:647;;;;;:::o;11319:257::-;;11431:2;11419:9;11410:7;11406:23;11402:32;11399:2;;;-1:-1;;11437:12;11399:2;1913:6;1907:13;46299:5;43547:13;43540:21;46277:5;46274:32;46264:2;;-1:-1;;46310:12;11583:241;;11687:2;11675:9;11666:7;11662:23;11658:32;11655:2;;;-1:-1;;11693:12;11655:2;-1:-1;2034:20;;11649:175;-1:-1;11649:175::o;11831:263::-;;11946:2;11934:9;11925:7;11921:23;11917:32;11914:2;;;-1:-1;;11952:12;11914:2;-1:-1;2182:13;;11908:186;-1:-1;11908:186::o;12101:366::-;;;12222:2;12210:9;12201:7;12197:23;12193:32;12190:2;;;-1:-1;;12228:12;12190:2;2047:6;2034:20;12280:63;;12380:2;12423:9;12419:22;72:20;97:33;124:5;97:33;:::i;12474:995::-;;;;;;;;12680:3;12668:9;12659:7;12655:23;12651:33;12648:2;;;-1:-1;;12687:12;12648:2;2047:6;2034:20;12739:63;;12839:2;12882:9;12878:22;2034:20;12847:63;;12947:2;12990:9;12986:22;72:20;97:33;124:5;97:33;:::i;:::-;12955:63;-1:-1;13055:2;13094:22;;4006:20;;-1:-1;13163:3;13203:22;;72:20;97:33;72:20;97:33;:::i;:::-;12642:827;;;;-1:-1;12642:827;;;;13172:63;13272:3;13312:22;;4006:20;;-1:-1;13381:3;13421:22;;;4006:20;;12642:827;-1:-1;;12642:827::o;13476:312::-;;13615:3;13603:9;13594:7;13590:23;13586:33;13583:2;;;-1:-1;;13622:12;13583:2;3089:20;13615:3;3089:20;:::i;:::-;226:6;220:13;238:33;265:5;238:33;:::i;:::-;3169:86;;3317:2;3397:22;;2684:13;46816:1;46806:12;;46796:2;;-1:-1;;46822:12;46796:2;3317;3332:16;;3325:101;3489:2;3571:22;;2511:13;46700:1;46690:12;;46680:2;;-1:-1;;46706:12;46680:2;3489;3504:16;;3497:103;3662:2;3727:22;;220:13;238:33;220:13;238:33;:::i;:::-;3662:2;3677:16;;3670:86;3816:3;3882:22;;;4154:13;3832:16;;;3825:86;;;;-1:-1;3681:5;13577:211;-1:-1;13577:211::o;14065:259::-;;14178:2;14166:9;14157:7;14153:23;14149:32;14146:2;;;-1:-1;;14184:12;14146:2;4299:6;4293:13;44403:4;47177:5;44392:16;47154:5;47151:33;47141:2;;-1:-1;;47188:12;14874:137;-1:-1;;;;;44187:54;14961:45;;14955:56::o;16071:670::-;;16254:5;41554:12;42362:6;42357:3;42350:19;42399:4;;42394:3;42390:14;16266:83;;42399:4;16420:5;41235:14;-1:-1;16459:260;16484:6;16481:1;16478:13;16459:260;;;16545:13;;17751:37;;14697:14;;;;42100;;;;16506:1;16499:9;16459:260;;;-1:-1;16725:10;;16185:556;-1:-1;;;;;16185:556::o;17478:94::-;43547:13;43540:21;17533:34;;17527:45::o;17920:323::-;;18052:5;41554:12;42362:6;42357:3;42350:19;-1:-1;45561:101;45575:6;45572:1;45569:13;45561:101;;;42399:4;45642:11;;;;;45636:18;45623:11;;;;;45616:39;45590:10;45561:101;;;45677:6;45674:1;45671:13;45668:2;;;-1:-1;42399:4;45733:6;42394:3;45724:16;;45717:27;45668:2;-1:-1;45849:7;45833:14;-1:-1;;45829:28;18199:39;;;;42399:4;18199:39;;18000:243;-1:-1;;18000:243::o;21740:1142::-;21975:23;;21907:4;22011:38;;;41554:12;;21898:14;;;42350:19;;;21740:1142;;42399:4;;41235:14;;;;42390;;;;21740:1142;15720:290;15745:6;15742:1;15739:13;15720:290;;;15806:13;;-1:-1;;;;;44187:54;18326:65;;42100:14;;;;14515;;;;10798:18;15760:9;15720:290;;;15724:14;;42399:4;22269:5;22265:16;22259:23;22239:43;;22328:3;22322:4;22318:14;42399:4;22306:3;22302:14;22295:38;22348:103;22446:4;22432:12;22348:103;:::i;:::-;22340:111;;;;22540:4;22533:5;22529:16;22523:23;22592:3;22586:4;22582:14;22540:4;22570:3;22566:14;22559:38;22612:71;22678:4;22664:12;22612:71;:::i;:::-;22604:79;;;22781:4;22774:5;22770:16;22764:23;22793:57;22781:4;22839:3;22835:14;22821:12;22793:57;:::i;:::-;-1:-1;22866:11;21880:1002;-1:-1;;;21880:1002::o;26418:222::-;-1:-1;;;;;44187:54;;;;14961:45;;26545:2;26530:18;;26516:124::o;26892:460::-;-1:-1;;;;;44187:54;;;14804:58;;44187:54;;;;27255:2;27240:18;;14961:45;27338:2;27323:18;;17751:37;;;;27083:2;27068:18;;27054:298::o;27359:768::-;-1:-1;;;;;44187:54;;;14961:45;;44187:54;;;;27785:2;27770:18;;14961:45;27866:2;27851:18;;17751:37;;;;27947:2;27932:18;;17751:37;28028:3;28013:19;;17751:37;44198:42;28097:19;;17751:37;;;;27620:3;27605:19;;27591:536::o;28134:1228::-;-1:-1;;;;;44187:54;;;14961:45;;44187:54;;;28678:2;28663:18;;14961:45;28761:2;28746:18;;17751:37;;;;44187:54;;;28844:2;28829:18;;14961:45;44187:54;;;;28927:3;28912:19;;14961:45;44198:42;28996:19;;17751:37;29095:3;29080:19;;17751:37;;;;29179:3;29164:19;;17751:37;;;;29263:3;29248:19;;17751:37;;;;29347:3;29332:19;;17751:37;;;;28513:3;28498:19;;28484:878::o;29369:892::-;-1:-1;;;;;44187:54;;;14961:45;;44187:54;;;29829:2;29814:18;;14961:45;29912:2;29897:18;;17751:37;;;;44187:54;;;;29995:2;29980:18;;14961:45;30078:3;30063:19;;17751:37;;;;44198:42;30147:19;;17751:37;;;;30246:3;30231:19;;17751:37;;;;29664:3;29649:19;;29635:626::o;30268:333::-;-1:-1;;;;;44187:54;;;;14961:45;;30587:2;30572:18;;17751:37;30423:2;30408:18;;30394:207::o;30608:210::-;43547:13;;43540:21;17533:34;;30729:2;30714:18;;30700:118::o;30825:222::-;17751:37;;;30952:2;30937:18;;30923:124::o;31054:768::-;17751:37;;;-1:-1;;;;;44187:54;;;31512:2;31497:18;;14961:45;44187:54;;31611:2;31596:18;;14961:45;31347:3;31648:2;31633:18;;31626:48;;;31054:768;;31688:124;;31332:19;;31798:6;31688:124;:::i;:::-;31680:132;31318:504;-1:-1;;;;;;31318:504::o;32572:668::-;17751:37;;;32976:2;32961:18;;17751:37;;;;33059:2;33044:18;;17751:37;;;;33142:2;33127:18;;17751:37;33225:3;33210:19;;17751:37;32811:3;32796:19;;32782:458::o;33247:369::-;33420:2;33405:18;;45953:1;45943:12;;45933:2;;45959:9;45933:2;18486:62;;;44403:4;44392:16;;;;33602:2;33587:18;;;18911:56;33391:225;:::o;33623:505::-;;46065:1;46058:5;46055:12;46045:2;;46071:9;46045:2;45076:38;18650:3;18643:62;33840:2;33970;33959:9;33955:18;33948:48;34010:108;33840:2;33829:9;33825:18;34104:6;34010:108;:::i;34360:678::-;-1:-1;;;19450:24;;-1:-1;;;;;44187:54;;;;34860:2;34845:18;;14961:45;34941:2;34926:18;;17751:37;;;;35024:2;35009:18;;17751:37;34632:3;34617:19;;34603:435::o;35045:678::-;-1:-1;;;19625:20;;-1:-1;;;;;44187:54;;;;35545:2;35530:18;;14961:45;35626:2;35611:18;;17751:37;;;;35709:2;35694:18;;17751:37;35317:3;35302:19;;35288:435::o;35730:416::-;35930:2;35944:47;;;19884:2;35915:18;;;42350:19;-1:-1;;;42390:14;;;19900:41;19960:12;;;35901:245::o;36153:416::-;36353:2;36367:47;;;20211:2;36338:18;;;42350:19;-1:-1;;;42390:14;;;20227:42;20288:12;;;36324:245::o;36576:416::-;36776:2;36790:47;;;20539:2;36761:18;;;42350:19;20575:33;42390:14;;;20555:54;20628:12;;;36747:245::o;36999:416::-;37199:2;37213:47;;;20879:2;37184:18;;;42350:19;20915:27;42390:14;;;20895:48;20962:12;;;37170:245::o;37422:416::-;37622:2;37636:47;;;37607:18;;;42350:19;21249:34;42390:14;;;21229:55;21303:12;;;37593:245::o;37845:678::-;-1:-1;;;21466:20;;-1:-1;;;;;44187:54;;;;38345:2;38330:18;;14961:45;38426:2;38411:18;;17751:37;;;;38509:2;38494:18;;17751:37;38117:3;38102:19;;38088:435::o;38530:678::-;-1:-1;;;21637:20;;-1:-1;;;;;44187:54;;;;39030:2;39015:18;;14961:45;39111:2;39096:18;;17751:37;;;;39194:2;39179:18;;17751:37;38802:3;38787:19;;38773:435::o;39215:414::-;;39414:2;39435:17;39428:47;23247:16;23241:23;23173:6;;39414:2;39403:9;39399:18;23277:38;23330:73;23164:16;39403:9;23164:16;23384:12;23330:73;:::i;:::-;23322:81;;39414:2;23483:5;23479:16;23473:23;45849:7;;39403:9;23536:4;23532:14;;23516;39403:9;23516:14;23509:38;23562:73;23630:4;23616:12;23562:73;:::i;:::-;23554:81;;;23516:14;23717:5;23713:16;23707:23;23736:63;23784:14;39403:9;23784:14;23770:12;23736:63;:::i;:::-;;23784:14;23879:5;23875:16;23869:23;23946:14;39403:9;23946:14;17751:37;23946:14;24037:5;24033:16;24027:23;24056:63;24104:14;39403:9;24104:14;24090:12;24056:63;:::i;:::-;;24104:14;24194:5;24190:16;24184:23;24261:14;39403:9;24261:14;17751:37;24261:14;24356:5;24352:16;24346:23;24423:14;39403:9;24423:14;17751:37;24423:14;24512:5;24508:16;24502:23;24579:14;24502:23;24579:14;39403:9;24579:14;17751:37;24579:14;24672:5;24668:18;24662:25;;;;24741:16;24662:25;24741:16;39403:9;24741:16;17751:37;24741:16;24844:5;24840:18;24834:25;23173:6;39403:9;24913:16;17751:37;;;;39481:138;;;;39385:244;;;;:::o;39865:333::-;17751:37;;;40184:2;40169:18;;17751:37;40020:2;40005:18;;39991:207::o;40205:256::-;40267:2;40261:9;40293:17;;;40368:18;40353:34;;40389:22;;;40350:62;40347:2;;;40425:1;;40415:12;40347:2;40267;40434:22;40245:216;;-1:-1;40245:216::o;40468:319::-;;40642:18;40634:6;40631:30;40628:2;;;-1:-1;;40664:12;40628:2;-1:-1;40709:4;40697:17;;;40762:15;;40565:222::o;46094:117::-;-1:-1;;;;;44187:54;;46153:35;;46143:2;;46202:1;;46192:12;46143:2;46137:74;:::o",
    "source": "// Manager for creating margin trading pools\r\n// (c) Kallol Borah, 2023\r\n// \"SPDX-License-Identifier: BUSL1.1\"\r\n\r\npragma solidity 0.7.1;\r\npragma experimental ABIEncoderV2;\r\n\r\nimport \"./interfaces/IFactory.sol\";\r\nimport \"./interfaces/ISecurity.sol\";\r\nimport \"./interfaces/IMarginOrder.sol\";\r\nimport \"./interfaces/IMarginManager.sol\";\r\nimport \"./interfaces/IMarginTradingPool.sol\";\r\nimport \"./interfaces/IMarginTradingPoolFactory.sol\";\r\n\r\nimport '@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol';\r\nimport '@balancer-labs/v2-vault/contracts/interfaces/IVault.sol';\r\n\r\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/Math.sol\";\r\nimport \"@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol\";\r\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol\";\r\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol\";\r\nimport \"@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol\";\r\n\r\ncontract MarginIssueManager is IMarginManager, Ownable {\r\n\r\n    using Math for *;\r\n\r\n    // balancer variables\r\n    address private _poolFactory;    \r\n\r\n    address private _vault;\r\n\r\n    address private _distribution;\r\n\r\n    IFactory private _securityFactory;\r\n\r\n    uint256 private constant _INITIAL_BPT_SUPPLY = 2**(112) - 1;\r\n    uint256 private constant _DEFAULT_MINIMUM_BPT = 1e6;\r\n\r\n    //mapping security address to currency address to pool address\r\n    mapping(address => mapping(address => address)) private pools;\r\n\r\n    //mapping security token to pool id traded\r\n    mapping(address => bytes32) private poolSecurity;\r\n\r\n    //mapping pool id to issuer\r\n    mapping(bytes32 => address) private issuer;\r\n\r\n    //mapping token address to issuing fee collected\r\n    mapping(address => uint256) private fees;\r\n\r\n    //bridge \r\n    address private _bridge;\r\n\r\n    //positions mapping trader address to collateral address to positive/negative balance (true for +ve, false for -ve) amount\r\n    mapping(address => mapping(address => int256)) private collateralBalance;\r\n\r\n    //mapping pool id to cash token to collateral amount\r\n    mapping(bytes32 => mapping(address => uint256)) private collateralAmount;\r\n\r\n    //traders\r\n    address[] private traders;\r\n    mapping(address => uint256) private traderIndex;    \r\n\r\n    //positions mapping security to currency to array of trade positions\r\n    mapping(address => mapping(address => IMarginManager.tradePosition[])) private positions;\r\n\r\n    //position balances mapping buy (security or currency) to sell (security or currency) \r\n    mapping(address => mapping(address => uint256)) private positionBalance;\r\n    \r\n    //mapping order ref to index of position in positions array\r\n    mapping(bytes32 => uint256) private orders;\r\n\r\n    event tradeSettled( \r\n                        bytes32 indexed poolid,\r\n                        address transferor,\r\n                        address transferee,\r\n                        uint256 unitsToTransfer,\r\n                        address security,\r\n                        address currency,                        \r\n                        uint256 amountPaid,\r\n                        bytes32 cref,\r\n                        bytes32 ref,\r\n                        uint256 fee,\r\n                        uint256 timestamp\r\n                    );\r\n\r\n    event subscribers(address party, address counterparty, address indexed securityTraded, uint256 securityAmount, \r\n                        address currencySettled, uint256 cashAmount, bytes32 orderRef, uint256 timestamp);\r\n\r\n    event closures(bytes32 indexed poolId, address security, uint256 timestamp);\r\n    event feecollection(address indexed platform, uint256 collection, uint256 timestamp);\r\n\r\n    event collateral(bytes32 action, address indexed user, address currency, int256 balance, uint256 offerTime);\r\n    event PnLSettled(address indexed user, address security, address currency, int256 financing, int256 dividend, int256 commission, uint256 settlementTime);\r\n\r\n    modifier onlyIssueManager(address sender, address security){\r\n        address DP = _securityFactory.getDP(security);\r\n        require(DP==sender, \"Unauthorized access\");\r\n        _;\r\n    }\r\n\r\n    modifier onlyTrader(address sender){\r\n        require(traderIndex[sender]!=0, \"Unauthorized access\");\r\n        _;\r\n    }\r\n\r\n    modifier onlyBridge(address sender){\r\n        require(sender==_bridge, \"Only Bridge access\");\r\n        _;\r\n    } \r\n\r\n    function initialize(address poolFactory, address vault, address securityFactory, address distribution) public onlyOwner {\r\n        _poolFactory = poolFactory;\r\n        _vault = vault;\r\n        _securityFactory = IFactory(securityFactory);\r\n        _distribution = distribution;\r\n        _bridge = msg.sender;\r\n    }\r\n\r\n    function setBridge(address bridge) public onlyOwner {\r\n        _bridge = bridge;\r\n    }\r\n\r\n    function getPool(bytes32 poolId) external override view returns(bool){\r\n        if(issuer[poolId]==address(0x0)) \r\n            return false;\r\n        else\r\n            return true;\r\n    }\r\n\r\n    function issueProduct(address security, bytes32 securityType, address currency, bytes32 cficode, uint256 securityAmount, uint256 minimumOrderSize, uint256 cashAmount,\r\n                                uint256 margin, uint256 collateralAmnt, uint256 tradeFee) override external onlyIssueManager(msg.sender, security) {\r\n        require(IERC20(security).balanceOf(msg.sender)>=securityAmount && \r\n                IERC20(currency).balanceOf(msg.sender)>=cashAmount, \"No balance to create pool\");\r\n        ERC20(currency).transferFrom(msg.sender, address(this), cashAmount);\r\n        ERC20(security).transferFrom(msg.sender, address(this), securityAmount);  \r\n        ISecurity(security).whiteList(_vault, securityAmount);      \r\n        IMarginTradingPoolFactory.FactoryPoolParams memory poolparams = IMarginTradingPoolFactory.FactoryPoolParams({\r\n            name : \"Verified Pool Token\",\r\n            symbol : \"VPT\",\r\n            security : security,\r\n            securityType: securityType,\r\n            currency : currency,\r\n            cficode: cficode,\r\n            minOrderSize : minimumOrderSize,\r\n            margin : margin,\r\n            collateral: collateralAmnt,\r\n            tradeFeePercentage : tradeFee\r\n        });    \r\n        createPool(poolparams, security, securityAmount, currency, cashAmount, msg.sender);        \r\n    }\r\n\r\n    function createPool(IMarginTradingPoolFactory.FactoryPoolParams memory poolparams, address security, uint256 securityAmount, address currency, uint256 cashAmount, address creator) private {\r\n        pools[security][currency] = IMarginTradingPoolFactory(_poolFactory).create(poolparams);   \r\n        bytes32 poolId = IMarginTradingPool(pools[security][currency]).getPoolId();  \r\n        poolSecurity[security] = poolId; \r\n        issuer[poolId] = creator;\r\n        joinPool(security, currency, securityAmount, cashAmount, poolId);\r\n    }\r\n\r\n    function joinPool(address security, address currency, uint256 securityAmount, uint256 cashAmount, bytes32 poolId) private {\r\n        // join the pool here                \r\n        (IERC20[] memory tokens, , ) = IVault(_vault).getPoolTokens(poolId);\r\n        IAsset[] memory assets = _convertERC20sToAssets(tokens);\r\n        uint256[] memory maxAmountsIn = new uint256[](tokens.length);\r\n        ERC20(currency).approve(_vault, cashAmount);\r\n        ERC20(security).approve(_vault, securityAmount);\r\n        for(uint256 t; t < tokens.length; t++) {\r\n            if(tokens[t]==IERC20(security))\r\n                maxAmountsIn[t] = securityAmount;\r\n            else if(tokens[t]==IERC20(currency))\r\n                maxAmountsIn[t] = cashAmount;\r\n            else \r\n                maxAmountsIn[t] = Math.sub(_INITIAL_BPT_SUPPLY, _DEFAULT_MINIMUM_BPT);\r\n        }\r\n        IVault.JoinPoolRequest memory request = IVault.JoinPoolRequest({\r\n            assets: assets,\r\n            maxAmountsIn: maxAmountsIn,\r\n            userData: abi.encode(JoinKind.INIT, maxAmountsIn),\r\n            fromInternalBalance: false\r\n        });         \r\n        IVault(_vault).joinPool(poolId, address(this), address(this), request);\r\n    }\r\n\r\n    function close(address security, address currency) override external onlyIssueManager(msg.sender, security) {\r\n        //address currency = IMarginTradingPool(pools[security][currency]).getCurrency(); \r\n        // exit the pool here   \r\n        bytes32 poolId = poolSecurity[security];\r\n        (IERC20[] memory tokens, , ) = IVault(_vault).getPoolTokens(poolId);\r\n        IAsset[] memory assets = _convertERC20sToAssets(tokens);\r\n        uint256[] memory amountsOut = new uint256[](tokens.length);\r\n        IVault.ExitPoolRequest memory request = IVault.ExitPoolRequest({\r\n            assets: assets,\r\n            minAmountsOut: amountsOut,\r\n            userData: abi.encode(ExitKind.EXACT_BPT_IN_FOR_TOKENS_OUT, 0),\r\n            toInternalBalance: false\r\n        });         \r\n        IVault(_vault).exitPool(poolId, address(this), payable(address(this)), request);\r\n        emit closures(poolId, security, block.timestamp);\r\n        IERC20(currency).transfer(issuer[poolId], IERC20(currency).balanceOf(address(this)));\r\n        IERC20(security).transfer(issuer[poolId], IERC20(security).balanceOf(address(this)));\r\n    }\r\n    \r\n    function offerCollateral(address cashToken, uint256 amount, address security) override external {\r\n        IERC20(cashToken).transferFrom(msg.sender, address(this), amount);\r\n        uint256 scalingFactor = _computeScalingFactor(IERC20(cashToken));\r\n        amount = _upscale(amount, scalingFactor);\r\n        collateralBalance[msg.sender][cashToken] = Math.add(int(amount), collateralBalance[msg.sender][cashToken]);\r\n        if(traderIndex[msg.sender]==0){\r\n            traders.push(msg.sender);\r\n            traderIndex[msg.sender] = traders.length;\r\n        }\r\n        bytes32 poolId = poolSecurity[security];\r\n        collateralAmount[poolId][cashToken] = Math.add(collateralAmount[poolId][cashToken], amount);\r\n        emit collateral(\"offer\", msg.sender, cashToken, collateralBalance[msg.sender][cashToken], block.timestamp);\r\n    }\r\n\r\n    function sendCollateral(address cashToken, uint256 amount, address security) override external onlyIssueManager(msg.sender, security){\r\n        bytes32 poolId = poolSecurity[security];\r\n        require(collateralAmount[poolId][cashToken] >= amount, \"Insufficient collateral for pool\");\r\n        collateralAmount[poolId][cashToken] = Math.sub(collateralAmount[poolId][cashToken], amount);\r\n        IERC20(cashToken).transfer(issuer[poolId], amount);\r\n    }\r\n\r\n    function getCollateral(bytes32 poolId, address currency) external override view returns(uint256){\r\n        return collateralAmount[poolId][currency];\r\n    }\r\n\r\n    function getUserCollateral(address party, address currency) external override view returns(int256){\r\n        return collateralBalance[party][currency];\r\n    }\r\n    \r\n    function onMatch(address party, address counterparty, bytes32 orderRef, address security, uint256 securityTraded, address currency, uint256 cashTraded) external \r\n                            override onlyBridge(msg.sender) {\r\n        IMarginOrder.order memory order = IMarginOrder(IMarginTradingPool(pools[security][currency]).getOrderbook()).getOrder(orderRef);\r\n        uint256 marginCollateral = Math.add(FixedPoint.mulDown(cashTraded, IMarginTradingPool(pools[security][currency]).getMargin()),\r\n                                            FixedPoint.mulDown(cashTraded, IMarginTradingPool(pools[security][currency]).getCollateral()));\r\n        //for security traded in by counterparty, party is trading in cash to buy security, so margin collateral needs to be checked        \r\n        if(pretradeCheck(order, party, currency, marginCollateral)){   \r\n            emit subscribers(party, counterparty, security, securityTraded, currency, cashTraded, orderRef, block.timestamp);\r\n            if(order.tokenIn==currency && order.party==party){\r\n                collateralBalance[party][currency] = Math.sub(collateralBalance[party][currency], int(marginCollateral));\r\n                emit collateral(\"match\", party, currency, collateralBalance[party][currency], block.timestamp);\r\n            }\r\n            //record trade position\r\n            address buyer;\r\n            address seller;\r\n            if(order.tokenIn==currency){ //buy order\r\n                buyer = party;\r\n                seller = counterparty;\r\n            }\r\n            else if(order.tokenIn==security){ //sell order\r\n                buyer = counterparty;\r\n                seller = party;\r\n            }\r\n            IMarginManager.tradePosition memory position = IMarginManager.tradePosition({\r\n                //buyer : order.tokenIn==currency && order.party==party ? party : counterparty,\r\n                //seller : order.tokenIn==security && order.party==counterparty ? counterparty : party,\r\n                buyer : buyer,\r\n                seller : seller,\r\n                securityAmount : securityTraded,\r\n                cashAmount : cashTraded,\r\n                orderReference : orderRef,\r\n                marginCollateral : marginCollateral,\r\n                timestamp : 0\r\n            });\r\n            positions[security][currency].push(position);\r\n            orders[orderRef] = positions[security][currency].length - 1;\r\n        }\r\n    }\r\n    \r\n    function pretradeCheck(IMarginOrder.order memory order, address party, address currency, uint256 marginCollateral) private view returns(bool){\r\n        if(order.tokenIn==currency){\r\n            if(collateralBalance[party][currency] >= int(marginCollateral))\r\n                return true;\r\n            else\r\n                return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    function onTrade(bytes32 ref, bytes32 cref, address security, uint256 securityTraded, address currency, uint256 currencyTraded, uint256 executionTime) external override onlyBridge(msg.sender) {\r\n        if(securityTraded!=0 && currencyTraded!=0){ //if trade execution is successful, report trade and update timestamp\r\n            uint256 pay = calculateFee(pools[security][currency], currency, currencyTraded);\r\n            address orderbook = IMarginTradingPool(pools[security][currency]).getOrderbook();\r\n            address party = IMarginOrder(orderbook).getOrder(ref).tokenIn==currency ? \r\n                                        IMarginOrder(orderbook).getOrder(ref).party :\r\n                                        IMarginOrder(orderbook).getOrder(cref).party;\r\n            IMarginOrder(orderbook).reportTrade(ref, cref, securityTraded, currencyTraded, block.timestamp);\r\n            tradeReport(orderbook, ref, cref, securityTraded, currencyTraded, party, pay);\r\n            uint256 pos = orders[ref];\r\n            //IMarginManager.tradePosition memory position;\r\n            //position = positions[security][currency][pos];\r\n            positions[security][currency][pos].timestamp = executionTime;\r\n            pos = orders[cref];\r\n            //position = positions[security][currency][pos];\r\n            positions[security][currency][pos].timestamp = executionTime;\r\n        }\r\n        else{ //if trade execution fails, add back cash \r\n            IMarginManager.tradePosition memory position;\r\n            uint256 pos = orders[ref];\r\n            position = positions[security][currency][pos];\r\n            collateralBalance[position.buyer][currency] = Math.add(collateralBalance[position.buyer][currency], int(position.marginCollateral));\r\n            delete positions[security][currency][pos];\r\n            emit collateral(\"trade\", position.buyer, currency, collateralBalance[position.buyer][currency], block.timestamp);\r\n            pos = orders[cref];\r\n            position = positions[security][currency][pos];\r\n            collateralBalance[position.buyer][currency] = Math.add(collateralBalance[position.buyer][currency], int(position.marginCollateral));\r\n            delete positions[security][currency][pos];\r\n            emit collateral(\"trade\", position.buyer, currency, collateralBalance[position.buyer][currency], block.timestamp);\r\n        }\r\n    }\r\n\r\n    function tradeReport(address orderbook, bytes32 ref, bytes32 cref, uint256 securityTraded, \r\n                            uint256 currencyTraded, address buyer, uint256 pay) private {\r\n        emit tradeSettled( \r\n            IMarginOrder(orderbook).getPoolId(),\r\n            IMarginOrder(orderbook).getOrder(ref).party==buyer ?\r\n                                IMarginOrder(orderbook).getOrder(cref).party :\r\n                                IMarginOrder(orderbook).getOrder(ref).party,\r\n            buyer,\r\n            securityTraded,\r\n            IMarginOrder(orderbook).getSecurity(),\r\n            IMarginOrder(orderbook).getCurrency(),\r\n            currencyTraded,\r\n            cref,\r\n            ref,\r\n            pay,\r\n            block.timestamp\r\n        );\r\n    }    \r\n    \r\n    function calculateFee(address pool, address currency, uint256 currencyTraded) private returns(uint256){\r\n        uint256 fee = IMarginTradingPool(pool).getFee();\r\n        fee = FixedPoint.mulDown(currencyTraded, fee);\r\n        //uint256 pay = FixedPoint.divDown(fee, _computeScalingFactor(IERC20(currency)));\r\n        //emit feeTest(IMarginTradingPool(pool).getFee(), fee, pay);\r\n        fees[currency] = Math.add(fees[currency], fee);\r\n        return fee;\r\n    }\r\n\r\n    function onSettle(address security, address currency, int256 financingBidPerSec, int256 financingOfferPerSec, int256 dividendBidPerSec, int256 dividendOfferPerSec, int256 swapLong, int256 swapShort, uint256 settlementTime) override external onlyIssueManager(msg.sender, security){\r\n        for(uint256 i=0; i<positions[security][currency].length; i++){\r\n            IMarginManager.tradePosition memory position = positions[security][currency][i];\r\n            if(collateralBalance[position.buyer][currency]>0){\r\n                buyerCollateralBalance(position.buyer, security, currency, financingOfferPerSec, dividendOfferPerSec, swapLong, settlementTime, position.timestamp);            \r\n            }\r\n            if(collateralBalance[position.seller][currency]>0){\r\n                sellerCollateralBalance(position.seller, security, currency, financingBidPerSec, dividendBidPerSec, swapShort, settlementTime, position.timestamp);\r\n            }\r\n        }\r\n        //if(collateralBalance[msg.sender][currency]!=0){\r\n        //    buyerCollateralBalance(msg.sender, security, currency, financingOfferPerSec, dividendOfferPerSec, swapLong, settlementTime, settlementTime-1000000000);            \r\n        //}\r\n        //if(collateralBalance[msg.sender][currency]!=0){\r\n        //    sellerCollateralBalance(msg.sender, security, currency, financingBidPerSec, dividendBidPerSec, swapShort, settlementTime, position.timestamp);\r\n        //}\r\n    }    \r\n\r\n    function buyerCollateralBalance(address user, address security, address currency, int256 financingOfferPerSec, int256 dividendOfferPerSec, int256 swapLong, uint256 settlementTime, uint256 timestamp) private {\r\n        if(financingOfferPerSec > 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], financingOfferPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        else if(financingOfferPerSec < 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], financingOfferPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        if(dividendOfferPerSec > 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], dividendOfferPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        else if(dividendOfferPerSec < 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], dividendOfferPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        if(swapLong > 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], swapLong * int(Math.sub(settlementTime, timestamp)));\r\n        else if(swapLong < 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], swapLong * int(Math.sub(settlementTime, timestamp)));\r\n        //position.timestamp = settlementTime;\r\n        emit PnLSettled(user, security, currency, financingOfferPerSec * int(Math.sub(settlementTime, timestamp)), dividendOfferPerSec * int(Math.sub(settlementTime, timestamp)), swapLong * int(Math.sub(settlementTime, timestamp)), block.timestamp);\r\n    }\r\n\r\n    function sellerCollateralBalance(address user, address security, address currency, int256 financingBidPerSec, int256 dividendBidPerSec, int256 swapShort, uint256 settlementTime, uint256 timestamp) private {\r\n        if(financingBidPerSec > 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], financingBidPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        else if(financingBidPerSec < 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], financingBidPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        if(dividendBidPerSec > 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], dividendBidPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        else if(dividendBidPerSec < 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], dividendBidPerSec * int(Math.sub(settlementTime, timestamp)));\r\n        if(swapShort > 0)\r\n            collateralBalance[user][currency] = Math.add(collateralBalance[user][currency], swapShort * int(Math.sub(settlementTime, timestamp)));\r\n        else if(swapShort < 0)\r\n            collateralBalance[user][currency] = Math.sub(collateralBalance[user][currency], swapShort * int(Math.sub(settlementTime, timestamp)));\r\n        //position.timestamp = settlementTime;\r\n        emit PnLSettled(user, security, currency, financingBidPerSec * int(Math.sub(settlementTime, timestamp)), dividendBidPerSec * int(Math.sub(settlementTime, timestamp)), swapShort * int(Math.sub(settlementTime, timestamp)), block.timestamp);\r\n    }\r\n\r\n    function withdraw(address security, address currency, uint256 amount) override external onlyTrader(msg.sender){\r\n        bytes32 poolId = poolSecurity[security];\r\n        for(uint256 i=0; i<positions[security][currency].length; i++){\r\n            IMarginManager.tradePosition memory position = positions[security][currency][i];\r\n            if(position.buyer==msg.sender && collateralBalance[position.buyer][currency]>0){\r\n                if(int(amount) >= collateralBalance[position.buyer][currency]){\r\n                    IERC20(currency).transfer(position.buyer, uint(collateralBalance[position.buyer][currency]));\r\n                    collateralAmount[poolId][currency] = Math.sub(collateralAmount[poolId][currency], uint(collateralBalance[position.buyer][currency]));\r\n                    emit collateral(\"withdrawl\", position.buyer, currency, collateralBalance[position.buyer][currency], block.timestamp);\r\n                    amount = Math.sub(amount, uint(collateralBalance[position.buyer][currency]));\r\n                    collateralBalance[position.buyer][currency] = 0;                    \r\n                }\r\n                else{\r\n                    IERC20(currency).transfer(position.buyer, amount);\r\n                    collateralAmount[poolId][currency] = Math.sub(collateralAmount[poolId][currency], amount);   \r\n                    emit collateral(\"withdrawl\", position.buyer, currency, int(amount), block.timestamp);                 \r\n                    collateralBalance[position.buyer][currency] = Math.sub(collateralBalance[position.buyer][currency], int(amount)); \r\n                    amount = 0;\r\n                }                \r\n                //delete positions[security][currency][orders[position.orderReference]];\r\n            }\r\n            else if(position.seller==msg.sender && collateralBalance[position.seller][currency]>0){\r\n                if(int(amount) >= collateralBalance[position.seller][currency]){\r\n                    IERC20(currency).transfer(position.seller, uint(collateralBalance[position.seller][currency]));\r\n                    collateralAmount[poolId][currency] = Math.sub(collateralAmount[poolId][currency], uint(collateralBalance[position.seller][currency]));\r\n                    emit collateral(\"withdrawl\", position.seller, currency, collateralBalance[position.seller][currency], block.timestamp);\r\n                    amount = Math.sub(amount, uint(collateralBalance[position.seller][currency]));\r\n                    collateralBalance[position.seller][currency] = 0;                    \r\n                }\r\n                else{\r\n                    IERC20(currency).transfer(position.seller, amount);\r\n                    collateralAmount[poolId][currency] = Math.sub(collateralAmount[poolId][currency], amount);   \r\n                    emit collateral(\"withdrawl\", position.seller, currency, int(amount), block.timestamp);                 \r\n                    collateralBalance[position.seller][currency] = Math.sub(collateralBalance[position.seller][currency], int(amount)); \r\n                    amount = 0;\r\n                }\r\n                //delete positions[security][currency][orders[position.orderReference]];\r\n            }\r\n        }\r\n    }\r\n\r\n    function getTradingFeeCollected(address _token) override external returns(uint256){\r\n        require(msg.sender==_distribution, \"Unauthorized collection request\");\r\n        uint256 feeCollected = fees[_token];\r\n        fees[_token] = Math.sub(fees[_token], feeCollected);\r\n        IERC20(_token).transfer(_distribution, feeCollected);\r\n        emit feecollection(address(this), feeCollected, block.timestamp);\r\n        return feeCollected;\r\n    }  \r\n\r\n    /**\r\n     * @dev This helper function is a fast and cheap way to convert between IERC20[] and IAsset[] types\r\n     */\r\n    function _convertERC20sToAssets(IERC20[] memory tokens) internal pure returns (IAsset[] memory assets) {\r\n        // solhint-disable-next-line no-inline-assembly\r\n        assembly {\r\n            assets := tokens\r\n        }\r\n    }\r\n\r\n    /**\r\n     * @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\r\n     * it had 18 decimals.\r\n     */\r\n    function _computeScalingFactor(IERC20 token) internal view returns (uint256) {\r\n        // Tokens that don't implement the `decimals` method are not supported.\r\n        uint256 tokenDecimals = ERC20(address(token)).decimals();\r\n\r\n        // Tokens with more than 18 decimals are not supported.\r\n        uint256 decimalsDifference = Math.sub(18, tokenDecimals);\r\n        return FixedPoint.ONE * 10**decimalsDifference;\r\n    }\r\n\r\n    function _upscale(uint256 amount, uint256 scalingFactor) internal pure returns (uint256) {        \r\n        return FixedPoint.mulDown(amount, scalingFactor);\r\n    }\r\n\r\n}",
    "sourcePath": "D:\\Code\\verified-balancer\\contracts\\MarginIssueManager.sol",
    "ast": {
        "absolutePath": "project:/contracts/MarginIssueManager.sol",
        "exportedSymbols": {
            "MarginIssueManager": [
                6363
            ]
        },
        "id": 6364,
        "license": "BUSL1.1",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 3690,
                "literals": [
                    "solidity",
                    "0.7",
                    ".1"
                ],
                "nodeType": "PragmaDirective",
                "src": "114:22:16"
            },
            {
                "id": 3691,
                "literals": [
                    "experimental",
                    "ABIEncoderV2"
                ],
                "nodeType": "PragmaDirective",
                "src": "138:33:16"
            },
            {
                "absolutePath": "project:/contracts/interfaces/IFactory.sol",
                "file": "./interfaces/IFactory.sol",
                "id": 3692,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 11154,
                "src": "175:35:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/ISecurity.sol",
                "file": "./interfaces/ISecurity.sol",
                "id": 3693,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 12159,
                "src": "212:36:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarginOrder.sol",
                "file": "./interfaces/IMarginOrder.sol",
                "id": 3694,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 11608,
                "src": "250:39:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarginManager.sol",
                "file": "./interfaces/IMarginManager.sol",
                "id": 3695,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 11518,
                "src": "291:41:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarginTradingPool.sol",
                "file": "./interfaces/IMarginTradingPool.sol",
                "id": 3696,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 11652,
                "src": "334:45:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "project:/contracts/interfaces/IMarginTradingPoolFactory.sol",
                "file": "./interfaces/IMarginTradingPoolFactory.sol",
                "id": 3697,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 11684,
                "src": "381:52:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol",
                "file": "@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol",
                "id": 3698,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 3128,
                "src": "437:65:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-vault/contracts/interfaces/IVault.sol",
                "file": "@balancer-labs/v2-vault/contracts/interfaces/IVault.sol",
                "id": 3699,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 3689,
                "src": "504:65:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/math/Math.sol",
                "file": "@balancer-labs/v2-solidity-utils/contracts/math/Math.sol",
                "id": 3700,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 2368,
                "src": "573:66:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol",
                "file": "@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol",
                "id": 3701,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 781,
                "src": "641:72:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol",
                "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol",
                "id": 3702,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 2861,
                "src": "715:75:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol",
                "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol",
                "id": 3703,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 2939,
                "src": "792:76:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
                "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
                "id": 3704,
                "nodeType": "ImportDirective",
                "scope": 6364,
                "sourceUnit": 3046,
                "src": "870:77:16",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 3705,
                            "name": "IMarginManager",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 11517,
                            "src": "982:14:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IMarginManager_$11517",
                                "typeString": "contract IMarginManager"
                            }
                        },
                        "id": 3706,
                        "nodeType": "InheritanceSpecifier",
                        "src": "982:14:16"
                    },
                    {
                        "baseName": {
                            "id": 3707,
                            "name": "Ownable",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 3045,
                            "src": "998:7:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Ownable_$3045",
                                "typeString": "contract Ownable"
                            }
                        },
                        "id": 3708,
                        "nodeType": "InheritanceSpecifier",
                        "src": "998:7:16"
                    }
                ],
                "contractDependencies": [
                    3045,
                    11517
                ],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 6363,
                "linearizedBaseContracts": [
                    6363,
                    3045,
                    11517
                ],
                "name": "MarginIssueManager",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "id": 3710,
                        "libraryName": {
                            "id": 3709,
                            "name": "Math",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2367,
                            "src": "1021:4:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Math_$2367",
                                "typeString": "library Math"
                            }
                        },
                        "nodeType": "UsingForDirective",
                        "src": "1015:17:16"
                    },
                    {
                        "constant": false,
                        "id": 3712,
                        "mutability": "mutable",
                        "name": "_poolFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1067:28:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 3711,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1067:7:16",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3714,
                        "mutability": "mutable",
                        "name": "_vault",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1108:22:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 3713,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1108:7:16",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3716,
                        "mutability": "mutable",
                        "name": "_distribution",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1139:29:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 3715,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1139:7:16",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3718,
                        "mutability": "mutable",
                        "name": "_securityFactory",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1177:33:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IFactory_$11153",
                            "typeString": "contract IFactory"
                        },
                        "typeName": {
                            "id": 3717,
                            "name": "IFactory",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 11153,
                            "src": "1177:8:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFactory_$11153",
                                "typeString": "contract IFactory"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": true,
                        "id": 3726,
                        "mutability": "constant",
                        "name": "_INITIAL_BPT_SUPPLY",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1219:59:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 3719,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1219:7:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "commonType": {
                                "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1",
                                "typeString": "int_const 5192...(26 digits omitted)...0095"
                            },
                            "id": 3725,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "leftExpression": {
                                "commonType": {
                                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                                },
                                "id": 3723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                    "hexValue": "32",
                                    "id": 3720,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1266:1:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                    "components": [
                                        {
                                            "hexValue": "313132",
                                            "id": 3721,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1270:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_112_by_1",
                                                "typeString": "int_const 112"
                                            },
                                            "value": "112"
                                        }
                                    ],
                                    "id": 3722,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "1269:5:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_rational_112_by_1",
                                        "typeString": "int_const 112"
                                    }
                                },
                                "src": "1266:8:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                                }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                                "hexValue": "31",
                                "id": 3724,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1277:1:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                },
                                "value": "1"
                            },
                            "src": "1266:12:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1",
                                "typeString": "int_const 5192...(26 digits omitted)...0095"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": true,
                        "id": 3729,
                        "mutability": "constant",
                        "name": "_DEFAULT_MINIMUM_BPT",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1285:51:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 3727,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1285:7:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "value": {
                            "hexValue": "316536",
                            "id": 3728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1333:3:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000000_by_1",
                                "typeString": "int_const 1000000"
                            },
                            "value": "1e6"
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3735,
                        "mutability": "mutable",
                        "name": "pools",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1413:61:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                            "typeString": "mapping(address => mapping(address => address))"
                        },
                        "typeName": {
                            "id": 3734,
                            "keyType": {
                                "id": 3730,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1421:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1413:47:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(address => address))"
                            },
                            "valueType": {
                                "id": 3733,
                                "keyType": {
                                    "id": 3731,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1440:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1432:27:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                },
                                "valueType": {
                                    "id": 3732,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1451:7:16",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3739,
                        "mutability": "mutable",
                        "name": "poolSecurity",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1531:48:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                            "typeString": "mapping(address => bytes32)"
                        },
                        "typeName": {
                            "id": 3738,
                            "keyType": {
                                "id": 3736,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1539:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1531:27:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                "typeString": "mapping(address => bytes32)"
                            },
                            "valueType": {
                                "id": 3737,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1550:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3743,
                        "mutability": "mutable",
                        "name": "issuer",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1621:42:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                        },
                        "typeName": {
                            "id": 3742,
                            "keyType": {
                                "id": 3740,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "1629:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1621:27:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                "typeString": "mapping(bytes32 => address)"
                            },
                            "valueType": {
                                "id": 3741,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1640:7:16",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3747,
                        "mutability": "mutable",
                        "name": "fees",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1726:40:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 3746,
                            "keyType": {
                                "id": 3744,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1734:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1726:27:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 3745,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1745:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3749,
                        "mutability": "mutable",
                        "name": "_bridge",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1790:23:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 3748,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1790:7:16",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3755,
                        "mutability": "mutable",
                        "name": "collateralBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "1950:72:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                            "typeString": "mapping(address => mapping(address => int256))"
                        },
                        "typeName": {
                            "id": 3754,
                            "keyType": {
                                "id": 3750,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1958:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1950:46:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                "typeString": "mapping(address => mapping(address => int256))"
                            },
                            "valueType": {
                                "id": 3753,
                                "keyType": {
                                    "id": 3751,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1977:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "1969:26:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                    "typeString": "mapping(address => int256)"
                                },
                                "valueType": {
                                    "id": 3752,
                                    "name": "int256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1988:6:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3761,
                        "mutability": "mutable",
                        "name": "collateralAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2089:72:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(bytes32 => mapping(address => uint256))"
                        },
                        "typeName": {
                            "id": 3760,
                            "keyType": {
                                "id": 3756,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2097:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2089:47:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                            },
                            "valueType": {
                                "id": 3759,
                                "keyType": {
                                    "id": 3757,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2116:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "2108:27:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                },
                                "valueType": {
                                    "id": 3758,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2127:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3764,
                        "mutability": "mutable",
                        "name": "traders",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2185:25:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[]"
                        },
                        "typeName": {
                            "baseType": {
                                "id": 3762,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2185:7:16",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "id": 3763,
                            "nodeType": "ArrayTypeName",
                            "src": "2185:9:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                "typeString": "address[]"
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3768,
                        "mutability": "mutable",
                        "name": "traderIndex",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2217:47:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                        },
                        "typeName": {
                            "id": 3767,
                            "keyType": {
                                "id": 3765,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2225:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2217:27:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                            },
                            "valueType": {
                                "id": 3766,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2236:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3775,
                        "mutability": "mutable",
                        "name": "positions",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2351:88:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition[]))"
                        },
                        "typeName": {
                            "id": 3774,
                            "keyType": {
                                "id": 3769,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2359:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2351:70:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition[]))"
                            },
                            "valueType": {
                                "id": 3773,
                                "keyType": {
                                    "id": 3770,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2378:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "2370:50:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                    "typeString": "mapping(address => struct IMarginManager.tradePosition[])"
                                },
                                "valueType": {
                                    "baseType": {
                                        "id": 3771,
                                        "name": "IMarginManager.tradePosition",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 11372,
                                        "src": "2389:28:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_tradePosition_$11372_storage_ptr",
                                            "typeString": "struct IMarginManager.tradePosition"
                                        }
                                    },
                                    "id": 3772,
                                    "nodeType": "ArrayTypeName",
                                    "src": "2389:30:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_ptr",
                                        "typeString": "struct IMarginManager.tradePosition[]"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3781,
                        "mutability": "mutable",
                        "name": "positionBalance",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2540:71:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                            "typeString": "mapping(address => mapping(address => uint256))"
                        },
                        "typeName": {
                            "id": 3780,
                            "keyType": {
                                "id": 3776,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2548:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2540:47:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                            },
                            "valueType": {
                                "id": 3779,
                                "keyType": {
                                    "id": 3777,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2567:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    }
                                },
                                "nodeType": "Mapping",
                                "src": "2559:27:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                },
                                "valueType": {
                                    "id": 3778,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2578:7:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    }
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "constant": false,
                        "id": 3785,
                        "mutability": "mutable",
                        "name": "orders",
                        "nodeType": "VariableDeclaration",
                        "scope": 6363,
                        "src": "2689:42:16",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                            "typeString": "mapping(bytes32 => uint256)"
                        },
                        "typeName": {
                            "id": 3784,
                            "keyType": {
                                "id": 3782,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "2697:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "2689:27:16",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                "typeString": "mapping(bytes32 => uint256)"
                            },
                            "valueType": {
                                "id": 3783,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2708:7:16",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                }
                            }
                        },
                        "visibility": "private"
                    },
                    {
                        "anonymous": false,
                        "id": 3809,
                        "name": "tradeSettled",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3808,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3787,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "poolid",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "2786:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3786,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2786:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3789,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "transferor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "2835:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3788,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2835:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3791,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "transferee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "2880:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3790,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2880:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3793,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "unitsToTransfer",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "2925:23:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3792,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2925:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3795,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "2975:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3794,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2975:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3797,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3018:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3796,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3018:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3799,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "amountPaid",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3085:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3798,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3085:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3801,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "cref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3130:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3800,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3130:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3803,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "ref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3169:11:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3802,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3169:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3805,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "fee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3207:11:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3804,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3207:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3807,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3809,
                                    "src": "3245:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3806,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3245:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2758:527:16"
                        },
                        "src": "2740:546:16"
                    },
                    {
                        "anonymous": false,
                        "id": 3827,
                        "name": "subscribers",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3826,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3811,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3312:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3810,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3312:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3813,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "counterparty",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3327:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3812,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3327:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3815,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "securityTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3349:30:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3814,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3349:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3817,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "securityAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3381:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3816,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3381:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3819,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "currencySettled",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3431:23:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3818,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3431:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3821,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "cashAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3456:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3820,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3456:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3823,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "orderRef",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3476:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3822,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3476:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3825,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3827,
                                    "src": "3494:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3824,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3494:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3311:201:16"
                        },
                        "src": "3294:219:16"
                    },
                    {
                        "anonymous": false,
                        "id": 3835,
                        "name": "closures",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3834,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3829,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "poolId",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3835,
                                    "src": "3536:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3828,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3536:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3831,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3835,
                                    "src": "3560:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3830,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3560:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3833,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3835,
                                    "src": "3578:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3832,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3578:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3535:61:16"
                        },
                        "src": "3521:76:16"
                    },
                    {
                        "anonymous": false,
                        "id": 3843,
                        "name": "feecollection",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3842,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3837,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "platform",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3843,
                                    "src": "3623:24:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3836,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3623:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3839,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "collection",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3843,
                                    "src": "3649:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3838,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3649:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3841,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3843,
                                    "src": "3669:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3840,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3669:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3622:65:16"
                        },
                        "src": "3603:85:16"
                    },
                    {
                        "anonymous": false,
                        "id": 3855,
                        "name": "collateral",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3854,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3845,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "action",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3855,
                                    "src": "3713:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3844,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3713:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3847,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "user",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3855,
                                    "src": "3729:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3846,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3729:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3849,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3855,
                                    "src": "3751:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3848,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3751:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3851,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "balance",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3855,
                                    "src": "3769:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 3850,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3769:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3853,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "offerTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3855,
                                    "src": "3785:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3852,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3785:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3712:91:16"
                        },
                        "src": "3696:108:16"
                    },
                    {
                        "anonymous": false,
                        "id": 3871,
                        "name": "PnLSettled",
                        "nodeType": "EventDefinition",
                        "parameters": {
                            "id": 3870,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3857,
                                    "indexed": true,
                                    "mutability": "mutable",
                                    "name": "user",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3827:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3856,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3827:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3859,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3849:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3858,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3849:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3861,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3867:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3860,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3867:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3863,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "financing",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3885:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 3862,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3885:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3865,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "dividend",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3903:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 3864,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3903:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3867,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "commission",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3920:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 3866,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3920:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3869,
                                    "indexed": false,
                                    "mutability": "mutable",
                                    "name": "settlementTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3871,
                                    "src": "3939:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3868,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3939:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3826:136:16"
                        },
                        "src": "3810:153:16"
                    },
                    {
                        "body": {
                            "id": 3892,
                            "nodeType": "Block",
                            "src": "4030:129:16",
                            "statements": [
                                {
                                    "assignments": [
                                        3878
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 3878,
                                            "mutability": "mutable",
                                            "name": "DP",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3892,
                                            "src": "4041:10:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 3877,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "4041:7:16",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 3883,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 3881,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3875,
                                                "src": "4077:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "expression": {
                                                "id": 3879,
                                                "name": "_securityFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3718,
                                                "src": "4054:16:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IFactory_$11153",
                                                    "typeString": "contract IFactory"
                                                }
                                            },
                                            "id": 3880,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getDP",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11152,
                                            "src": "4054:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                                                "typeString": "function (address) view external returns (address)"
                                            }
                                        },
                                        "id": 3882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4054:32:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "4041:45:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 3887,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 3885,
                                                    "name": "DP",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3878,
                                                    "src": "4105:2:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "id": 3886,
                                                    "name": "sender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3873,
                                                    "src": "4109:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "4105:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "556e617574686f72697a656420616363657373",
                                                "id": 3888,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4117:21:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                    "typeString": "literal_string \"Unauthorized access\""
                                                },
                                                "value": "Unauthorized access"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                    "typeString": "literal_string \"Unauthorized access\""
                                                }
                                            ],
                                            "id": 3884,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "4097:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 3889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4097:42:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3890,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4097:42:16"
                                },
                                {
                                    "id": 3891,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "4150:1:16"
                                }
                            ]
                        },
                        "id": 3893,
                        "name": "onlyIssueManager",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 3876,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3873,
                                    "mutability": "mutable",
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3893,
                                    "src": "3997:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3872,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3997:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3875,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3893,
                                    "src": "4013:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3874,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4013:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3996:34:16"
                        },
                        "src": "3971:188:16",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3907,
                            "nodeType": "Block",
                            "src": "4202:85:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 3902,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "baseExpression": {
                                                        "id": 3898,
                                                        "name": "traderIndex",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3768,
                                                        "src": "4221:11:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 3900,
                                                    "indexExpression": {
                                                        "id": 3899,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3895,
                                                        "src": "4233:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4221:19:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "hexValue": "30",
                                                    "id": 3901,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4242:1:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0"
                                                },
                                                "src": "4221:22:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "556e617574686f72697a656420616363657373",
                                                "id": 3903,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4245:21:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                    "typeString": "literal_string \"Unauthorized access\""
                                                },
                                                "value": "Unauthorized access"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                    "typeString": "literal_string \"Unauthorized access\""
                                                }
                                            ],
                                            "id": 3897,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "4213:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 3904,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4213:54:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3905,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4213:54:16"
                                },
                                {
                                    "id": 3906,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "4278:1:16"
                                }
                            ]
                        },
                        "id": 3908,
                        "name": "onlyTrader",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 3896,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3895,
                                    "mutability": "mutable",
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3908,
                                    "src": "4187:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3894,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4187:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4186:16:16"
                        },
                        "src": "4167:120:16",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3920,
                            "nodeType": "Block",
                            "src": "4330:77:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 3915,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 3913,
                                                    "name": "sender",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3910,
                                                    "src": "4349:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "id": 3914,
                                                    "name": "_bridge",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3749,
                                                    "src": "4357:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "4349:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4f6e6c792042726964676520616363657373",
                                                "id": 3916,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "4366:20:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_7d6f01825081424caae652b6c8834768bc58048c5cfbd312e37caed9eeb57cbd",
                                                    "typeString": "literal_string \"Only Bridge access\""
                                                },
                                                "value": "Only Bridge access"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_7d6f01825081424caae652b6c8834768bc58048c5cfbd312e37caed9eeb57cbd",
                                                    "typeString": "literal_string \"Only Bridge access\""
                                                }
                                            ],
                                            "id": 3912,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "4341:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 3917,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4341:46:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3918,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4341:46:16"
                                },
                                {
                                    "id": 3919,
                                    "nodeType": "PlaceholderStatement",
                                    "src": "4398:1:16"
                                }
                            ]
                        },
                        "id": 3921,
                        "name": "onlyBridge",
                        "nodeType": "ModifierDefinition",
                        "parameters": {
                            "id": 3911,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3910,
                                    "mutability": "mutable",
                                    "name": "sender",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3921,
                                    "src": "4315:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3909,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4315:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4314:16:16"
                        },
                        "src": "4295:112:16",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3957,
                            "nodeType": "Block",
                            "src": "4536:195:16",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 3936,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3934,
                                            "name": "_poolFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3712,
                                            "src": "4547:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3935,
                                            "name": "poolFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3923,
                                            "src": "4562:11:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4547:26:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3937,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4547:26:16"
                                },
                                {
                                    "expression": {
                                        "id": 3940,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3938,
                                            "name": "_vault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3714,
                                            "src": "4584:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3939,
                                            "name": "vault",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3925,
                                            "src": "4593:5:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4584:14:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3941,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4584:14:16"
                                },
                                {
                                    "expression": {
                                        "id": 3946,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3942,
                                            "name": "_securityFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3718,
                                            "src": "4609:16:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IFactory_$11153",
                                                "typeString": "contract IFactory"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 3944,
                                                    "name": "securityFactory",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3927,
                                                    "src": "4637:15:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 3943,
                                                "name": "IFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11153,
                                                "src": "4628:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IFactory_$11153_$",
                                                    "typeString": "type(contract IFactory)"
                                                }
                                            },
                                            "id": 3945,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4628:25:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IFactory_$11153",
                                                "typeString": "contract IFactory"
                                            }
                                        },
                                        "src": "4609:44:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IFactory_$11153",
                                            "typeString": "contract IFactory"
                                        }
                                    },
                                    "id": 3947,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4609:44:16"
                                },
                                {
                                    "expression": {
                                        "id": 3950,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3948,
                                            "name": "_distribution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3716,
                                            "src": "4664:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3949,
                                            "name": "distribution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3929,
                                            "src": "4680:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4664:28:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3951,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4664:28:16"
                                },
                                {
                                    "expression": {
                                        "id": 3955,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3952,
                                            "name": "_bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3749,
                                            "src": "4703:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 3953,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "4713:3:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 3954,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "4713:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "4703:20:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3956,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4703:20:16"
                                }
                            ]
                        },
                        "functionSelector": "f8c8765e",
                        "id": 3958,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 3932,
                                "modifierName": {
                                    "id": 3931,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2993,
                                    "src": "4526:9:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4526:9:16"
                            }
                        ],
                        "name": "initialize",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3930,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3923,
                                    "mutability": "mutable",
                                    "name": "poolFactory",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3958,
                                    "src": "4436:19:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3922,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4436:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3925,
                                    "mutability": "mutable",
                                    "name": "vault",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3958,
                                    "src": "4457:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3924,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4457:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3927,
                                    "mutability": "mutable",
                                    "name": "securityFactory",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3958,
                                    "src": "4472:23:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3926,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4472:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3929,
                                    "mutability": "mutable",
                                    "name": "distribution",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3958,
                                    "src": "4497:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3928,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4497:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4435:83:16"
                        },
                        "returnParameters": {
                            "id": 3933,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4536:0:16"
                        },
                        "scope": 6363,
                        "src": "4416:315:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 3969,
                            "nodeType": "Block",
                            "src": "4791:35:16",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 3967,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3965,
                                            "name": "_bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3749,
                                            "src": "4802:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3966,
                                            "name": "bridge",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3960,
                                            "src": "4812:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "4802:16:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3968,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4802:16:16"
                                }
                            ]
                        },
                        "functionSelector": "8dd14802",
                        "id": 3970,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 3963,
                                "modifierName": {
                                    "id": 3962,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2993,
                                    "src": "4781:9:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "4781:9:16"
                            }
                        ],
                        "name": "setBridge",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3961,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3960,
                                    "mutability": "mutable",
                                    "name": "bridge",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3970,
                                    "src": "4758:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3959,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4758:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4757:16:16"
                        },
                        "returnParameters": {
                            "id": 3964,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "4791:0:16"
                        },
                        "scope": 6363,
                        "src": "4739:87:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "baseFunctions": [
                            11516
                        ],
                        "body": {
                            "id": 3991,
                            "nodeType": "Block",
                            "src": "4903:118:16",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 3985,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 3978,
                                                "name": "issuer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3743,
                                                "src": "4917:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                    "typeString": "mapping(bytes32 => address)"
                                                }
                                            },
                                            "id": 3980,
                                            "indexExpression": {
                                                "id": 3979,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3972,
                                                "src": "4924:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "4917:14:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "307830",
                                                    "id": 3983,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4941:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    },
                                                    "value": "0x0"
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                    }
                                                ],
                                                "id": 3982,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "4933:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 3981,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4933:7:16",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 3984,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4933:12:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "4917:28:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "expression": {
                                            "hexValue": "74727565",
                                            "id": 3988,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "5009:4:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "true"
                                        },
                                        "functionReturnParameters": 3977,
                                        "id": 3989,
                                        "nodeType": "Return",
                                        "src": "5002:11:16"
                                    },
                                    "id": 3990,
                                    "nodeType": "IfStatement",
                                    "src": "4914:99:16",
                                    "trueBody": {
                                        "expression": {
                                            "hexValue": "66616c7365",
                                            "id": 3986,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4968:5:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "value": "false"
                                        },
                                        "functionReturnParameters": 3977,
                                        "id": 3987,
                                        "nodeType": "Return",
                                        "src": "4961:12:16"
                                    }
                                }
                            ]
                        },
                        "functionSelector": "f6c00927",
                        "id": 3992,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getPool",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3974,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "4876:8:16"
                        },
                        "parameters": {
                            "id": 3973,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3972,
                                    "mutability": "mutable",
                                    "name": "poolId",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3992,
                                    "src": "4851:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3971,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4851:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4850:16:16"
                        },
                        "returnParameters": {
                            "id": 3977,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3976,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3992,
                                    "src": "4898:4:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3975,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4898:4:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "4897:6:16"
                        },
                        "scope": 6363,
                        "src": "4834:187:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11395
                        ],
                        "body": {
                            "id": 4106,
                            "nodeType": "Block",
                            "src": "5344:1024:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "id": 4040,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4030,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4026,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "5390:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4027,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "5390:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4023,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3994,
                                                                        "src": "5370:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4022,
                                                                    "name": "IERC20",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2938,
                                                                    "src": "5363:6:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                        "typeString": "type(contract IERC20)"
                                                                    }
                                                                },
                                                                "id": 4024,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5363:16:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4025,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "balanceOf",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2877,
                                                            "src": "5363:26:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4028,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5363:38:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "id": 4029,
                                                        "name": "securityAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4002,
                                                        "src": "5403:14:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5363:54:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "&&",
                                                "rightExpression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4039,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4035,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "5466:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4036,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "5466:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4032,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3998,
                                                                        "src": "5446:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4031,
                                                                    "name": "IERC20",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2938,
                                                                    "src": "5439:6:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                        "typeString": "type(contract IERC20)"
                                                                    }
                                                                },
                                                                "id": 4033,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "5439:16:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4034,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "balanceOf",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2877,
                                                            "src": "5439:26:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4037,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5439:38:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "id": 4038,
                                                        "name": "cashAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4006,
                                                        "src": "5479:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5439:50:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "src": "5363:126:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4e6f2062616c616e636520746f2063726561746520706f6f6c",
                                                "id": 4041,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5491:27:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_d05be564bd54ad6151c2e50eb2ac86d2647726f6cf824747fecbebc8bc5730bc",
                                                    "typeString": "literal_string \"No balance to create pool\""
                                                },
                                                "value": "No balance to create pool"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_d05be564bd54ad6151c2e50eb2ac86d2647726f6cf824747fecbebc8bc5730bc",
                                                    "typeString": "literal_string \"No balance to create pool\""
                                                }
                                            ],
                                            "id": 4021,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "5355:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 4042,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5355:164:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4043,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5355:164:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4048,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "5559:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4049,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "5559:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4052,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "5579:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4051,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "5571:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4050,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "5571:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4053,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5571:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4054,
                                                "name": "cashAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4006,
                                                "src": "5586:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4045,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3998,
                                                        "src": "5536:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4044,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2860,
                                                    "src": "5530:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$2860_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 4046,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5530:15:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$2860",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 4047,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transferFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2582,
                                            "src": "5530:28:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4055,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5530:67:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4056,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5530:67:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4061,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "5637:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4062,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "5637:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4065,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "5657:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4064,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "5649:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4063,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "5649:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4066,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5649:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4067,
                                                "name": "securityAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4002,
                                                "src": "5664:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4058,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3994,
                                                        "src": "5614:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4057,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2860,
                                                    "src": "5608:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$2860_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 4059,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5608:15:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$2860",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 4060,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transferFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2582,
                                            "src": "5608:28:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4068,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5608:71:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4069,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5608:71:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4074,
                                                "name": "_vault",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3714,
                                                "src": "5722:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4075,
                                                "name": "securityAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4002,
                                                "src": "5730:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4071,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3994,
                                                        "src": "5702:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4070,
                                                    "name": "ISecurity",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 12158,
                                                    "src": "5692:9:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ISecurity_$12158_$",
                                                        "typeString": "type(contract ISecurity)"
                                                    }
                                                },
                                                "id": 4072,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5692:19:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ISecurity_$12158",
                                                    "typeString": "contract ISecurity"
                                                }
                                            },
                                            "id": 4073,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "whiteList",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 12157,
                                            "src": "5692:29:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256) external"
                                            }
                                        },
                                        "id": 4076,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5692:53:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4077,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5692:53:16"
                                },
                                {
                                    "assignments": [
                                        4081
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4081,
                                            "mutability": "mutable",
                                            "name": "poolparams",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4106,
                                            "src": "5762:61:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                            },
                                            "typeName": {
                                                "id": 4080,
                                                "name": "IMarginTradingPoolFactory.FactoryPoolParams",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 11675,
                                                "src": "5762:43:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_storage_ptr",
                                                    "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4095,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "566572696669656420506f6f6c20546f6b656e",
                                                "id": 4084,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5892:21:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_d8407c43b70b062a4ebfce2d65b9d672a39ddff01e2772e896f61833dce954b7",
                                                    "typeString": "literal_string \"Verified Pool Token\""
                                                },
                                                "value": "Verified Pool Token"
                                            },
                                            {
                                                "hexValue": "565054",
                                                "id": 4085,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "5937:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_7fee470b81c86493872dc1c9070ce794188d075d1c10f31e689bb13cbd714392",
                                                    "typeString": "literal_string \"VPT\""
                                                },
                                                "value": "VPT"
                                            },
                                            {
                                                "id": 4086,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3994,
                                                "src": "5968:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4087,
                                                "name": "securityType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3996,
                                                "src": "6005:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 4088,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3998,
                                                "src": "6043:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4089,
                                                "name": "cficode",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4000,
                                                "src": "6075:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 4090,
                                                "name": "minimumOrderSize",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4004,
                                                "src": "6112:16:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4091,
                                                "name": "margin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4008,
                                                "src": "6152:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4092,
                                                "name": "collateralAmnt",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4010,
                                                "src": "6185:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4093,
                                                "name": "tradeFee",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4012,
                                                "src": "6235:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_d8407c43b70b062a4ebfce2d65b9d672a39ddff01e2772e896f61833dce954b7",
                                                    "typeString": "literal_string \"Verified Pool Token\""
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_7fee470b81c86493872dc1c9070ce794188d075d1c10f31e689bb13cbd714392",
                                                    "typeString": "literal_string \"VPT\""
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 4082,
                                                "name": "IMarginTradingPoolFactory",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 11683,
                                                "src": "5826:25:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IMarginTradingPoolFactory_$11683_$",
                                                    "typeString": "type(contract IMarginTradingPoolFactory)"
                                                }
                                            },
                                            "id": 4083,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "FactoryPoolParams",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11675,
                                            "src": "5826:43:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_FactoryPoolParams_$11675_storage_ptr_$",
                                                "typeString": "type(struct IMarginTradingPoolFactory.FactoryPoolParams storage pointer)"
                                            }
                                        },
                                        "id": 4094,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [
                                            "name",
                                            "symbol",
                                            "security",
                                            "securityType",
                                            "currency",
                                            "cficode",
                                            "minOrderSize",
                                            "margin",
                                            "collateral",
                                            "tradeFeePercentage"
                                        ],
                                        "nodeType": "FunctionCall",
                                        "src": "5826:429:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                            "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5762:493:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4097,
                                                "name": "poolparams",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4081,
                                                "src": "6281:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                    "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                }
                                            },
                                            {
                                                "id": 4098,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3994,
                                                "src": "6293:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4099,
                                                "name": "securityAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4002,
                                                "src": "6303:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4100,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3998,
                                                "src": "6319:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4101,
                                                "name": "cashAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4006,
                                                "src": "6329:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 4102,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "6341:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4103,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "6341:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                    "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 4096,
                                            "name": "createPool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4168,
                                            "src": "6270:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_FactoryPoolParams_$11675_memory_ptr_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                                                "typeString": "function (struct IMarginTradingPoolFactory.FactoryPoolParams memory,address,uint256,address,uint256,address)"
                                            }
                                        },
                                        "id": 4104,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6270:82:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4105,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6270:82:16"
                                }
                            ]
                        },
                        "functionSelector": "541af9d8",
                        "id": 4107,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 4016,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "5322:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 4017,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "5322:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    {
                                        "id": 4018,
                                        "name": "security",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3994,
                                        "src": "5334:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 4019,
                                "modifierName": {
                                    "id": 4015,
                                    "name": "onlyIssueManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3893,
                                    "src": "5305:16:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$_t_address_$",
                                        "typeString": "modifier (address,address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "5305:38:16"
                            }
                        ],
                        "name": "issueProduct",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4014,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "5287:8:16"
                        },
                        "parameters": {
                            "id": 4013,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3994,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5051:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3993,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5051:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3996,
                                    "mutability": "mutable",
                                    "name": "securityType",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5069:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3995,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5069:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3998,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5091:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3997,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5091:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4000,
                                    "mutability": "mutable",
                                    "name": "cficode",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5109:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3999,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5109:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4002,
                                    "mutability": "mutable",
                                    "name": "securityAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5126:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4001,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5126:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4004,
                                    "mutability": "mutable",
                                    "name": "minimumOrderSize",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5150:24:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4003,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5150:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4006,
                                    "mutability": "mutable",
                                    "name": "cashAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5176:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4005,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5176:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4008,
                                    "mutability": "mutable",
                                    "name": "margin",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5229:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4007,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5229:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4010,
                                    "mutability": "mutable",
                                    "name": "collateralAmnt",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5245:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4009,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5245:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4012,
                                    "mutability": "mutable",
                                    "name": "tradeFee",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4107,
                                    "src": "5269:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4011,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5269:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "5050:236:16"
                        },
                        "returnParameters": {
                            "id": 4020,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "5344:0:16"
                        },
                        "scope": 6363,
                        "src": "5029:1339:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 4167,
                            "nodeType": "Block",
                            "src": "6564:348:16",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 4133,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 4122,
                                                    "name": "pools",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3735,
                                                    "src": "6575:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                        "typeString": "mapping(address => mapping(address => address))"
                                                    }
                                                },
                                                "id": 4125,
                                                "indexExpression": {
                                                    "id": 4123,
                                                    "name": "security",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4111,
                                                    "src": "6581:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6575:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                    "typeString": "mapping(address => address)"
                                                }
                                            },
                                            "id": 4126,
                                            "indexExpression": {
                                                "id": 4124,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4115,
                                                "src": "6591:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "6575:25:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 4131,
                                                    "name": "poolparams",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4109,
                                                    "src": "6650:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                        "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                        "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                    }
                                                ],
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4128,
                                                            "name": "_poolFactory",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3712,
                                                            "src": "6629:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 4127,
                                                        "name": "IMarginTradingPoolFactory",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 11683,
                                                        "src": "6603:25:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_IMarginTradingPoolFactory_$11683_$",
                                                            "typeString": "type(contract IMarginTradingPoolFactory)"
                                                        }
                                                    },
                                                    "id": 4129,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6603:39:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IMarginTradingPoolFactory_$11683",
                                                        "typeString": "contract IMarginTradingPoolFactory"
                                                    }
                                                },
                                                "id": 4130,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "create",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 11682,
                                                "src": "6603:46:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_external_nonpayable$_t_struct$_FactoryPoolParams_$11675_memory_ptr_$returns$_t_address_$",
                                                    "typeString": "function (struct IMarginTradingPoolFactory.FactoryPoolParams memory) external returns (address)"
                                                }
                                            },
                                            "id": 4132,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "6603:58:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "6575:86:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 4134,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6575:86:16"
                                },
                                {
                                    "assignments": [
                                        4136
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4136,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4167,
                                            "src": "6675:14:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 4135,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "6675:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4146,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 4138,
                                                                "name": "pools",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3735,
                                                                "src": "6711:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                    "typeString": "mapping(address => mapping(address => address))"
                                                                }
                                                            },
                                                            "id": 4140,
                                                            "indexExpression": {
                                                                "id": 4139,
                                                                "name": "security",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4111,
                                                                "src": "6717:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "6711:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                "typeString": "mapping(address => address)"
                                                            }
                                                        },
                                                        "id": 4142,
                                                        "indexExpression": {
                                                            "id": 4141,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4115,
                                                            "src": "6727:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6711:25:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4137,
                                                    "name": "IMarginTradingPool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11651,
                                                    "src": "6692:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                        "typeString": "type(contract IMarginTradingPool)"
                                                    }
                                                },
                                                "id": 4143,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6692:45:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                    "typeString": "contract IMarginTradingPool"
                                                }
                                            },
                                            "id": 4144,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getPoolId",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11615,
                                            "src": "6692:55:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                                "typeString": "function () view external returns (bytes32)"
                                            }
                                        },
                                        "id": 4145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6692:57:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "6675:74:16"
                                },
                                {
                                    "expression": {
                                        "id": 4151,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4147,
                                                "name": "poolSecurity",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3739,
                                                "src": "6762:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                    "typeString": "mapping(address => bytes32)"
                                                }
                                            },
                                            "id": 4149,
                                            "indexExpression": {
                                                "id": 4148,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4111,
                                                "src": "6775:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "6762:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 4150,
                                            "name": "poolId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4136,
                                            "src": "6787:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "src": "6762:31:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "id": 4152,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6762:31:16"
                                },
                                {
                                    "expression": {
                                        "id": 4157,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 4153,
                                                "name": "issuer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3743,
                                                "src": "6805:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                    "typeString": "mapping(bytes32 => address)"
                                                }
                                            },
                                            "id": 4155,
                                            "indexExpression": {
                                                "id": 4154,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4136,
                                                "src": "6812:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "6805:14:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 4156,
                                            "name": "creator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4119,
                                            "src": "6822:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "6805:24:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 4158,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6805:24:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4160,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4111,
                                                "src": "6849:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4161,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4115,
                                                "src": "6859:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4162,
                                                "name": "securityAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4113,
                                                "src": "6869:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4163,
                                                "name": "cashAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4117,
                                                "src": "6885:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 4164,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4136,
                                                "src": "6897:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "id": 4159,
                                            "name": "joinPool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4312,
                                            "src": "6840:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$",
                                                "typeString": "function (address,address,uint256,uint256,bytes32)"
                                            }
                                        },
                                        "id": 4165,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6840:64:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4166,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6840:64:16"
                                }
                            ]
                        },
                        "id": 4168,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "createPool",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4120,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4109,
                                    "mutability": "mutable",
                                    "name": "poolparams",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6396:61:16",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                        "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                    },
                                    "typeName": {
                                        "id": 4108,
                                        "name": "IMarginTradingPoolFactory.FactoryPoolParams",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 11675,
                                        "src": "6396:43:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_storage_ptr",
                                            "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4111,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6459:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4110,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6459:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4113,
                                    "mutability": "mutable",
                                    "name": "securityAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6477:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4112,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6477:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4115,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6501:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4114,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6501:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4117,
                                    "mutability": "mutable",
                                    "name": "cashAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6519:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4116,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6519:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4119,
                                    "mutability": "mutable",
                                    "name": "creator",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4168,
                                    "src": "6539:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4118,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6539:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6395:160:16"
                        },
                        "returnParameters": {
                            "id": 4121,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "6564:0:16"
                        },
                        "scope": 6363,
                        "src": "6376:536:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 4311,
                            "nodeType": "Block",
                            "src": "7042:1094:16",
                            "statements": [
                                {
                                    "assignments": [
                                        4184,
                                        null,
                                        null
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4184,
                                            "mutability": "mutable",
                                            "name": "tokens",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4311,
                                            "src": "7101:22:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                "typeString": "contract IERC20[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4182,
                                                    "name": "IERC20",
                                                    "nodeType": "UserDefinedTypeName",
                                                    "referencedDeclaration": 2938,
                                                    "src": "7101:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "id": 4183,
                                                "nodeType": "ArrayTypeName",
                                                "src": "7101:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_storage_ptr",
                                                    "typeString": "contract IERC20[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        null,
                                        null
                                    ],
                                    "id": 4191,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4189,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4178,
                                                "src": "7160:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4186,
                                                        "name": "_vault",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3714,
                                                        "src": "7138:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4185,
                                                    "name": "IVault",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3688,
                                                    "src": "7131:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                        "typeString": "type(contract IVault)"
                                                    }
                                                },
                                                "id": 4187,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7131:14:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IVault_$3688",
                                                    "typeString": "contract IVault"
                                                }
                                            },
                                            "id": 4188,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getPoolTokens",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3444,
                                            "src": "7131:28:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$",
                                                "typeString": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"
                                            }
                                        },
                                        "id": 4190,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7131:36:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$",
                                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7100:67:16"
                                },
                                {
                                    "assignments": [
                                        4195
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4195,
                                            "mutability": "mutable",
                                            "name": "assets",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4311,
                                            "src": "7178:22:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                "typeString": "contract IAsset[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4193,
                                                    "name": "IAsset",
                                                    "nodeType": "UserDefinedTypeName",
                                                    "referencedDeclaration": 3127,
                                                    "src": "7178:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IAsset_$3127",
                                                        "typeString": "contract IAsset"
                                                    }
                                                },
                                                "id": 4194,
                                                "nodeType": "ArrayTypeName",
                                                "src": "7178:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_storage_ptr",
                                                    "typeString": "contract IAsset[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4199,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4197,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4184,
                                                "src": "7226:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                    "typeString": "contract IERC20[] memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                    "typeString": "contract IERC20[] memory"
                                                }
                                            ],
                                            "id": 4196,
                                            "name": "_convertERC20sToAssets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6311,
                                            "src": "7203:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr_$",
                                                "typeString": "function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"
                                            }
                                        },
                                        "id": 4198,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7203:30:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                            "typeString": "contract IAsset[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7178:55:16"
                                },
                                {
                                    "assignments": [
                                        4204
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4204,
                                            "mutability": "mutable",
                                            "name": "maxAmountsIn",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4311,
                                            "src": "7244:29:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4202,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7244:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4203,
                                                "nodeType": "ArrayTypeName",
                                                "src": "7244:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4211,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4208,
                                                    "name": "tokens",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4184,
                                                    "src": "7290:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                        "typeString": "contract IERC20[] memory"
                                                    }
                                                },
                                                "id": 4209,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "src": "7290:13:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4207,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "NewExpression",
                                            "src": "7276:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4205,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7280:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4206,
                                                "nodeType": "ArrayTypeName",
                                                "src": "7280:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            }
                                        },
                                        "id": 4210,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7276:28:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7244:60:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4216,
                                                "name": "_vault",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3714,
                                                "src": "7339:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4217,
                                                "name": "cashAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4176,
                                                "src": "7347:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4213,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4172,
                                                        "src": "7321:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4212,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2860,
                                                    "src": "7315:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$2860_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 4214,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7315:15:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$2860",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 4215,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "approve",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2543,
                                            "src": "7315:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4218,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7315:43:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4219,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7315:43:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4224,
                                                "name": "_vault",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3714,
                                                "src": "7393:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4225,
                                                "name": "securityAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4174,
                                                "src": "7401:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4221,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4170,
                                                        "src": "7375:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4220,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2860,
                                                    "src": "7369:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$2860_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 4222,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7369:15:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$2860",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 4223,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "approve",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2543,
                                            "src": "7369:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4226,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7369:47:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4227,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7369:47:16"
                                },
                                {
                                    "body": {
                                        "id": 4276,
                                        "nodeType": "Block",
                                        "src": "7466:312:16",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                        "typeString": "contract IERC20"
                                                    },
                                                    "id": 4244,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "id": 4238,
                                                            "name": "tokens",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4184,
                                                            "src": "7484:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                                "typeString": "contract IERC20[] memory"
                                                            }
                                                        },
                                                        "id": 4240,
                                                        "indexExpression": {
                                                            "id": 4239,
                                                            "name": "t",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4229,
                                                            "src": "7491:1:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7484:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 4242,
                                                                "name": "security",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4170,
                                                                "src": "7502:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4241,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2938,
                                                            "src": "7495:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 4243,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "7495:16:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "src": "7484:27:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                            "typeString": "contract IERC20"
                                                        },
                                                        "id": 4257,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "baseExpression": {
                                                                "id": 4251,
                                                                "name": "tokens",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4184,
                                                                "src": "7585:6:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                                    "typeString": "contract IERC20[] memory"
                                                                }
                                                            },
                                                            "id": 4253,
                                                            "indexExpression": {
                                                                "id": 4252,
                                                                "name": "t",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4229,
                                                                "src": "7592:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "7585:9:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4255,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4172,
                                                                    "src": "7603:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 4254,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2938,
                                                                "src": "7596:6:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 4256,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7596:16:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "src": "7585:27:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseBody": {
                                                        "expression": {
                                                            "id": 4272,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "baseExpression": {
                                                                    "id": 4264,
                                                                    "name": "maxAmountsIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4204,
                                                                    "src": "7697:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                        "typeString": "uint256[] memory"
                                                                    }
                                                                },
                                                                "id": 4266,
                                                                "indexExpression": {
                                                                    "id": 4265,
                                                                    "name": "t",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4229,
                                                                    "src": "7710:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "nodeType": "IndexAccess",
                                                                "src": "7697:15:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4269,
                                                                        "name": "_INITIAL_BPT_SUPPLY",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3726,
                                                                        "src": "7724:19:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 4270,
                                                                        "name": "_DEFAULT_MINIMUM_BPT",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3729,
                                                                        "src": "7745:20:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 4267,
                                                                        "name": "Math",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2367,
                                                                        "src": "7715:4:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                            "typeString": "type(library Math)"
                                                                        }
                                                                    },
                                                                    "id": 4268,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sub",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2177,
                                                                    "src": "7715:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 4271,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7715:51:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "7697:69:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4273,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "7697:69:16"
                                                    },
                                                    "id": 4274,
                                                    "nodeType": "IfStatement",
                                                    "src": "7582:184:16",
                                                    "trueBody": {
                                                        "expression": {
                                                            "id": 4262,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "baseExpression": {
                                                                    "id": 4258,
                                                                    "name": "maxAmountsIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4204,
                                                                    "src": "7631:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                        "typeString": "uint256[] memory"
                                                                    }
                                                                },
                                                                "id": 4260,
                                                                "indexExpression": {
                                                                    "id": 4259,
                                                                    "name": "t",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4229,
                                                                    "src": "7644:1:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": true,
                                                                "nodeType": "IndexAccess",
                                                                "src": "7631:15:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "id": 4261,
                                                                "name": "cashAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4176,
                                                                "src": "7649:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "7631:28:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 4263,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "7631:28:16"
                                                    }
                                                },
                                                "id": 4275,
                                                "nodeType": "IfStatement",
                                                "src": "7481:285:16",
                                                "trueBody": {
                                                    "expression": {
                                                        "id": 4249,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "baseExpression": {
                                                                "id": 4245,
                                                                "name": "maxAmountsIn",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4204,
                                                                "src": "7530:12:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                    "typeString": "uint256[] memory"
                                                                }
                                                            },
                                                            "id": 4247,
                                                            "indexExpression": {
                                                                "id": 4246,
                                                                "name": "t",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4229,
                                                                "src": "7543:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "nodeType": "IndexAccess",
                                                            "src": "7530:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "id": 4248,
                                                            "name": "securityAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4174,
                                                            "src": "7548:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "7530:32:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 4250,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "7530:32:16"
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 4234,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 4231,
                                            "name": "t",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4229,
                                            "src": "7442:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "id": 4232,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4184,
                                                "src": "7446:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                    "typeString": "contract IERC20[] memory"
                                                }
                                            },
                                            "id": 4233,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "7446:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "7442:17:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4277,
                                    "initializationExpression": {
                                        "assignments": [
                                            4229
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 4229,
                                                "mutability": "mutable",
                                                "name": "t",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4277,
                                                "src": "7431:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4228,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7431:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 4230,
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "7431:9:16"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 4236,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "7461:3:16",
                                            "subExpression": {
                                                "id": 4235,
                                                "name": "t",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4229,
                                                "src": "7461:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 4237,
                                        "nodeType": "ExpressionStatement",
                                        "src": "7461:3:16"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "7427:351:16"
                                },
                                {
                                    "assignments": [
                                        4281
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4281,
                                            "mutability": "mutable",
                                            "name": "request",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4311,
                                            "src": "7788:37:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_memory_ptr",
                                                "typeString": "struct IVault.JoinPoolRequest"
                                            },
                                            "typeName": {
                                                "id": 4280,
                                                "name": "IVault.JoinPoolRequest",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 3467,
                                                "src": "7788:22:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_storage_ptr",
                                                    "typeString": "struct IVault.JoinPoolRequest"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4294,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4284,
                                                "name": "assets",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4195,
                                                "src": "7874:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                    "typeString": "contract IAsset[] memory"
                                                }
                                            },
                                            {
                                                "id": 4285,
                                                "name": "maxAmountsIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4204,
                                                "src": "7909:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "id": 4288,
                                                            "name": "JoinKind",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11354,
                                                            "src": "7957:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_JoinKind_$11354_$",
                                                                "typeString": "type(enum IMarginManager.JoinKind)"
                                                            }
                                                        },
                                                        "id": 4289,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "INIT",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7957:13:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_JoinKind_$11354",
                                                            "typeString": "enum IMarginManager.JoinKind"
                                                        }
                                                    },
                                                    {
                                                        "id": 4290,
                                                        "name": "maxAmountsIn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4204,
                                                        "src": "7972:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                            "typeString": "uint256[] memory"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_enum$_JoinKind_$11354",
                                                            "typeString": "enum IMarginManager.JoinKind"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                            "typeString": "uint256[] memory"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 4286,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -1,
                                                        "src": "7946:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 4287,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "encode",
                                                    "nodeType": "MemberAccess",
                                                    "src": "7946:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 4291,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7946:39:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "hexValue": "66616c7365",
                                                "id": 4292,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8021:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "value": "false"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                    "typeString": "contract IAsset[] memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "expression": {
                                                "id": 4282,
                                                "name": "IVault",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3688,
                                                "src": "7828:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                    "typeString": "type(contract IVault)"
                                                }
                                            },
                                            "id": 4283,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "JoinPoolRequest",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3467,
                                            "src": "7828:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_JoinPoolRequest_$3467_storage_ptr_$",
                                                "typeString": "type(struct IVault.JoinPoolRequest storage pointer)"
                                            }
                                        },
                                        "id": 4293,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [
                                            "assets",
                                            "maxAmountsIn",
                                            "userData",
                                            "fromInternalBalance"
                                        ],
                                        "nodeType": "FunctionCall",
                                        "src": "7828:210:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_memory_ptr",
                                            "typeString": "struct IVault.JoinPoolRequest memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7788:250:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4299,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4178,
                                                "src": "8082:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4302,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "8098:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4301,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8090:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4300,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "8090:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4303,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8090:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4306,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "8113:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4305,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8105:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4304,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "8105:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4307,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8105:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4308,
                                                "name": "request",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4281,
                                                "src": "8120:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_memory_ptr",
                                                    "typeString": "struct IVault.JoinPoolRequest memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_memory_ptr",
                                                    "typeString": "struct IVault.JoinPoolRequest memory"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4296,
                                                        "name": "_vault",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3714,
                                                        "src": "8065:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4295,
                                                    "name": "IVault",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3688,
                                                    "src": "8058:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                        "typeString": "type(contract IVault)"
                                                    }
                                                },
                                                "id": 4297,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8058:14:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IVault_$3688",
                                                    "typeString": "contract IVault"
                                                }
                                            },
                                            "id": 4298,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "joinPool",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3456,
                                            "src": "8058:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_payable$_t_bytes32_$_t_address_$_t_address_$_t_struct$_JoinPoolRequest_$3467_memory_ptr_$returns$__$",
                                                "typeString": "function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"
                                            }
                                        },
                                        "id": 4309,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8058:70:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4310,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8058:70:16"
                                }
                            ]
                        },
                        "id": 4312,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "joinPool",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4179,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4170,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4312,
                                    "src": "6938:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4169,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6938:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4172,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4312,
                                    "src": "6956:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4171,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6956:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4174,
                                    "mutability": "mutable",
                                    "name": "securityAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4312,
                                    "src": "6974:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4173,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6974:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4176,
                                    "mutability": "mutable",
                                    "name": "cashAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4312,
                                    "src": "6998:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4175,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6998:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4178,
                                    "mutability": "mutable",
                                    "name": "poolId",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4312,
                                    "src": "7018:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 4177,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7018:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "6937:96:16"
                        },
                        "returnParameters": {
                            "id": 4180,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "7042:0:16"
                        },
                        "scope": 6363,
                        "src": "6920:1216:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            11436
                        ],
                        "body": {
                            "id": 4441,
                            "nodeType": "Block",
                            "src": "8252:1015:16",
                            "statements": [
                                {
                                    "assignments": [
                                        4326
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4326,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4441,
                                            "src": "8389:14:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 4325,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "8389:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4330,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 4327,
                                            "name": "poolSecurity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3739,
                                            "src": "8406:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                "typeString": "mapping(address => bytes32)"
                                            }
                                        },
                                        "id": 4329,
                                        "indexExpression": {
                                            "id": 4328,
                                            "name": "security",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4314,
                                            "src": "8419:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "8406:22:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8389:39:16"
                                },
                                {
                                    "assignments": [
                                        4334,
                                        null,
                                        null
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4334,
                                            "mutability": "mutable",
                                            "name": "tokens",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4441,
                                            "src": "8440:22:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                "typeString": "contract IERC20[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4332,
                                                    "name": "IERC20",
                                                    "nodeType": "UserDefinedTypeName",
                                                    "referencedDeclaration": 2938,
                                                    "src": "8440:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "id": 4333,
                                                "nodeType": "ArrayTypeName",
                                                "src": "8440:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_storage_ptr",
                                                    "typeString": "contract IERC20[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        null,
                                        null
                                    ],
                                    "id": 4341,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4339,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4326,
                                                "src": "8499:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4336,
                                                        "name": "_vault",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3714,
                                                        "src": "8477:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4335,
                                                    "name": "IVault",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3688,
                                                    "src": "8470:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                        "typeString": "type(contract IVault)"
                                                    }
                                                },
                                                "id": 4337,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8470:14:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IVault_$3688",
                                                    "typeString": "contract IVault"
                                                }
                                            },
                                            "id": 4338,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getPoolTokens",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3444,
                                            "src": "8470:28:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$",
                                                "typeString": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"
                                            }
                                        },
                                        "id": 4340,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8470:36:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$",
                                            "typeString": "tuple(contract IERC20[] memory,uint256[] memory,uint256)"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8439:67:16"
                                },
                                {
                                    "assignments": [
                                        4345
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4345,
                                            "mutability": "mutable",
                                            "name": "assets",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4441,
                                            "src": "8517:22:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                "typeString": "contract IAsset[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4343,
                                                    "name": "IAsset",
                                                    "nodeType": "UserDefinedTypeName",
                                                    "referencedDeclaration": 3127,
                                                    "src": "8517:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IAsset_$3127",
                                                        "typeString": "contract IAsset"
                                                    }
                                                },
                                                "id": 4344,
                                                "nodeType": "ArrayTypeName",
                                                "src": "8517:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_storage_ptr",
                                                    "typeString": "contract IAsset[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4349,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4347,
                                                "name": "tokens",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4334,
                                                "src": "8565:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                    "typeString": "contract IERC20[] memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                    "typeString": "contract IERC20[] memory"
                                                }
                                            ],
                                            "id": 4346,
                                            "name": "_convertERC20sToAssets",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6311,
                                            "src": "8542:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr_$returns$_t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr_$",
                                                "typeString": "function (contract IERC20[] memory) pure returns (contract IAsset[] memory)"
                                            }
                                        },
                                        "id": 4348,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8542:30:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                            "typeString": "contract IAsset[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8517:55:16"
                                },
                                {
                                    "assignments": [
                                        4354
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4354,
                                            "mutability": "mutable",
                                            "name": "amountsOut",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4441,
                                            "src": "8583:27:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[]"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4352,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8583:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4353,
                                                "nodeType": "ArrayTypeName",
                                                "src": "8583:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4361,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4358,
                                                    "name": "tokens",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4334,
                                                    "src": "8627:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                        "typeString": "contract IERC20[] memory"
                                                    }
                                                },
                                                "id": 4359,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "length",
                                                "nodeType": "MemberAccess",
                                                "src": "8627:13:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4357,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "NewExpression",
                                            "src": "8613:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                                            },
                                            "typeName": {
                                                "baseType": {
                                                    "id": 4355,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8617:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4356,
                                                "nodeType": "ArrayTypeName",
                                                "src": "8617:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                                    "typeString": "uint256[]"
                                                }
                                            }
                                        },
                                        "id": 4360,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8613:28:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8583:58:16"
                                },
                                {
                                    "assignments": [
                                        4365
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4365,
                                            "mutability": "mutable",
                                            "name": "request",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4441,
                                            "src": "8652:37:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_memory_ptr",
                                                "typeString": "struct IVault.ExitPoolRequest"
                                            },
                                            "typeName": {
                                                "id": 4364,
                                                "name": "IVault.ExitPoolRequest",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 3490,
                                                "src": "8652:22:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_storage_ptr",
                                                    "typeString": "struct IVault.ExitPoolRequest"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4378,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4368,
                                                "name": "assets",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4345,
                                                "src": "8738:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                    "typeString": "contract IAsset[] memory"
                                                }
                                            },
                                            {
                                                "id": 4369,
                                                "name": "amountsOut",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4354,
                                                "src": "8774:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "expression": {
                                                            "id": 4372,
                                                            "name": "ExitKind",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11357,
                                                            "src": "8820:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_enum$_ExitKind_$11357_$",
                                                                "typeString": "type(enum IMarginManager.ExitKind)"
                                                            }
                                                        },
                                                        "id": 4373,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "EXACT_BPT_IN_FOR_TOKENS_OUT",
                                                        "nodeType": "MemberAccess",
                                                        "src": "8820:36:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_enum$_ExitKind_$11357",
                                                            "typeString": "enum IMarginManager.ExitKind"
                                                        }
                                                    },
                                                    {
                                                        "hexValue": "30",
                                                        "id": 4374,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "8858:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_enum$_ExitKind_$11357",
                                                            "typeString": "enum IMarginManager.ExitKind"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 4370,
                                                        "name": "abi",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -1,
                                                        "src": "8809:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_abi",
                                                            "typeString": "abi"
                                                        }
                                                    },
                                                    "id": 4371,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "memberName": "encode",
                                                    "nodeType": "MemberAccess",
                                                    "src": "8809:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                        "typeString": "function () pure returns (bytes memory)"
                                                    }
                                                },
                                                "id": 4375,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8809:51:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                }
                                            },
                                            {
                                                "hexValue": "66616c7365",
                                                "id": 4376,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "8894:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "value": "false"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                    "typeString": "contract IAsset[] memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            ],
                                            "expression": {
                                                "id": 4366,
                                                "name": "IVault",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3688,
                                                "src": "8692:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                    "typeString": "type(contract IVault)"
                                                }
                                            },
                                            "id": 4367,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "ExitPoolRequest",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3490,
                                            "src": "8692:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_ExitPoolRequest_$3490_storage_ptr_$",
                                                "typeString": "type(struct IVault.ExitPoolRequest storage pointer)"
                                            }
                                        },
                                        "id": 4377,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [
                                            "assets",
                                            "minAmountsOut",
                                            "userData",
                                            "toInternalBalance"
                                        ],
                                        "nodeType": "FunctionCall",
                                        "src": "8692:219:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_memory_ptr",
                                            "typeString": "struct IVault.ExitPoolRequest memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8652:259:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 4383,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4326,
                                                "src": "8955:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4386,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "8971:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4385,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8963:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4384,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "8963:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4387,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8963:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 4392,
                                                                "name": "this",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -28,
                                                                "src": "8994:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            ],
                                                            "id": 4391,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "8986:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 4390,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "8986:7:16",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 4393,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "8986:13:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4389,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8978:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                                        "typeString": "type(address payable)"
                                                    },
                                                    "typeName": {
                                                        "id": 4388,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "8978:8:16",
                                                        "stateMutability": "payable",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4394,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8978:22:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 4395,
                                                "name": "request",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4365,
                                                "src": "9002:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_memory_ptr",
                                                    "typeString": "struct IVault.ExitPoolRequest memory"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_memory_ptr",
                                                    "typeString": "struct IVault.ExitPoolRequest memory"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4380,
                                                        "name": "_vault",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3714,
                                                        "src": "8938:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4379,
                                                    "name": "IVault",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3688,
                                                    "src": "8931:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IVault_$3688_$",
                                                        "typeString": "type(contract IVault)"
                                                    }
                                                },
                                                "id": 4381,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8931:14:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IVault_$3688",
                                                    "typeString": "contract IVault"
                                                }
                                            },
                                            "id": 4382,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "exitPool",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3479,
                                            "src": "8931:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_address_payable_$_t_struct$_ExitPoolRequest_$3490_memory_ptr_$returns$__$",
                                                "typeString": "function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"
                                            }
                                        },
                                        "id": 4396,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8931:79:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4397,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8931:79:16"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 4399,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4326,
                                                "src": "9035:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 4400,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4314,
                                                "src": "9043:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 4401,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "9053:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 4402,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "9053:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4398,
                                            "name": "closures",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3835,
                                            "src": "9026:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                                                "typeString": "function (bytes32,address,uint256)"
                                            }
                                        },
                                        "id": 4403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9026:43:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4404,
                                    "nodeType": "EmitStatement",
                                    "src": "9021:48:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 4409,
                                                    "name": "issuer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3743,
                                                    "src": "9106:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                        "typeString": "mapping(bytes32 => address)"
                                                    }
                                                },
                                                "id": 4411,
                                                "indexExpression": {
                                                    "id": 4410,
                                                    "name": "poolId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4326,
                                                    "src": "9113:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "9106:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 4418,
                                                                "name": "this",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -28,
                                                                "src": "9157:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            ],
                                                            "id": 4417,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "9149:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 4416,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "9149:7:16",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 4419,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9149:13:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 4413,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4316,
                                                                "src": "9129:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4412,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2938,
                                                            "src": "9122:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 4414,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9122:16:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "id": 4415,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "balanceOf",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2877,
                                                    "src": "9122:26:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) view external returns (uint256)"
                                                    }
                                                },
                                                "id": 4420,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9122:41:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4406,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4316,
                                                        "src": "9087:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4405,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "9080:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 4407,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9080:16:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 4408,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2887,
                                            "src": "9080:25:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4421,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9080:84:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4422,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9080:84:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 4427,
                                                    "name": "issuer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3743,
                                                    "src": "9201:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                        "typeString": "mapping(bytes32 => address)"
                                                    }
                                                },
                                                "id": 4429,
                                                "indexExpression": {
                                                    "id": 4428,
                                                    "name": "poolId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4326,
                                                    "src": "9208:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "9201:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 4436,
                                                                "name": "this",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -28,
                                                                "src": "9252:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                    "typeString": "contract MarginIssueManager"
                                                                }
                                                            ],
                                                            "id": 4435,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "9244:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 4434,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "9244:7:16",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 4437,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9244:13:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 4431,
                                                                "name": "security",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4314,
                                                                "src": "9224:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4430,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2938,
                                                            "src": "9217:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 4432,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9217:16:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "id": 4433,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "balanceOf",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2877,
                                                    "src": "9217:26:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                        "typeString": "function (address) view external returns (uint256)"
                                                    }
                                                },
                                                "id": 4438,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9217:41:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4424,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4314,
                                                        "src": "9182:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4423,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "9175:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 4425,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9175:16:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 4426,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2887,
                                            "src": "9175:25:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4439,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9175:84:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4440,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9175:84:16"
                                }
                            ]
                        },
                        "functionSelector": "719dcf4a",
                        "id": 4442,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 4320,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "8230:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 4321,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "8230:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    {
                                        "id": 4322,
                                        "name": "security",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4314,
                                        "src": "8242:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 4323,
                                "modifierName": {
                                    "id": 4319,
                                    "name": "onlyIssueManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3893,
                                    "src": "8213:16:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$_t_address_$",
                                        "typeString": "modifier (address,address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "8213:38:16"
                            }
                        ],
                        "name": "close",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4318,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "8195:8:16"
                        },
                        "parameters": {
                            "id": 4317,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4314,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4442,
                                    "src": "8159:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4313,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8159:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4316,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4442,
                                    "src": "8177:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4315,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8177:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "8158:36:16"
                        },
                        "returnParameters": {
                            "id": 4324,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "8252:0:16"
                        },
                        "scope": 6363,
                        "src": "8144:1123:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11452
                        ],
                        "body": {
                            "id": 4561,
                            "nodeType": "Block",
                            "src": "9375:742:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "expression": {
                                                    "id": 4456,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "9417:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4457,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "9417:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4460,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "9437:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 4459,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "9429:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 4458,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "9429:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 4461,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9429:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4462,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4446,
                                                "src": "9444:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4453,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4444,
                                                        "src": "9393:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4452,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "9386:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 4454,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9386:17:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 4455,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transferFrom",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2919,
                                            "src": "9386:30:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4463,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9386:65:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4464,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9386:65:16"
                                },
                                {
                                    "assignments": [
                                        4466
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4466,
                                            "mutability": "mutable",
                                            "name": "scalingFactor",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4561,
                                            "src": "9462:21:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 4465,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9462:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4472,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4469,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4444,
                                                        "src": "9515:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4468,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "9508:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 4470,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "9508:17:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            ],
                                            "id": 4467,
                                            "name": "_computeScalingFactor",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6346,
                                            "src": "9486:21:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_contract$_IERC20_$2938_$returns$_t_uint256_$",
                                                "typeString": "function (contract IERC20) view returns (uint256)"
                                            }
                                        },
                                        "id": 4471,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9486:40:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9462:64:16"
                                },
                                {
                                    "expression": {
                                        "id": 4478,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 4473,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4446,
                                            "src": "9537:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 4475,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4446,
                                                    "src": "9555:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 4476,
                                                    "name": "scalingFactor",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4466,
                                                    "src": "9563:13:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "id": 4474,
                                                "name": "_upscale",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6362,
                                                "src": "9546:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 4477,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9546:31:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "9537:40:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4479,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9537:40:16"
                                },
                                {
                                    "expression": {
                                        "id": 4499,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 4480,
                                                    "name": "collateralBalance",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3755,
                                                    "src": "9588:17:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                    }
                                                },
                                                "id": 4484,
                                                "indexExpression": {
                                                    "expression": {
                                                        "id": 4481,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "9606:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 4482,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "9606:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "9588:29:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                    "typeString": "mapping(address => int256)"
                                                }
                                            },
                                            "id": 4485,
                                            "indexExpression": {
                                                "id": 4483,
                                                "name": "cashToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4444,
                                                "src": "9618:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "9588:40:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "arguments": [
                                                        {
                                                            "id": 4490,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4446,
                                                            "src": "9644:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4489,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "9640:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 4488,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9640:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 4491,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9640:11:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 4492,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "9653:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 4495,
                                                        "indexExpression": {
                                                            "expression": {
                                                                "id": 4493,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "9671:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4494,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "9671:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9653:29:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 4497,
                                                    "indexExpression": {
                                                        "id": 4496,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4444,
                                                        "src": "9683:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9653:40:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 4486,
                                                    "name": "Math",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2367,
                                                    "src": "9631:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                        "typeString": "type(library Math)"
                                                    }
                                                },
                                                "id": 4487,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2150,
                                                "src": "9631:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                }
                                            },
                                            "id": 4498,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9631:63:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "src": "9588:106:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "id": 4500,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9588:106:16"
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 4506,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "baseExpression": {
                                                "id": 4501,
                                                "name": "traderIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3768,
                                                "src": "9708:11:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4504,
                                            "indexExpression": {
                                                "expression": {
                                                    "id": 4502,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "9720:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4503,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "9720:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "9708:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 4505,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9733:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "9708:26:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4523,
                                    "nodeType": "IfStatement",
                                    "src": "9705:136:16",
                                    "trueBody": {
                                        "id": 4522,
                                        "nodeType": "Block",
                                        "src": "9735:106:16",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4510,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "9763:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4511,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "9763:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4507,
                                                            "name": "traders",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3764,
                                                            "src": "9750:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 4509,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "9750:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                                            "typeString": "function (address)"
                                                        }
                                                    },
                                                    "id": 4512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9750:24:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4513,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9750:24:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4520,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4514,
                                                            "name": "traderIndex",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3768,
                                                            "src": "9789:11:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 4517,
                                                        "indexExpression": {
                                                            "expression": {
                                                                "id": 4515,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "9801:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4516,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "9801:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9789:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4518,
                                                            "name": "traders",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3764,
                                                            "src": "9815:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                                "typeString": "address[] storage ref"
                                                            }
                                                        },
                                                        "id": 4519,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "9815:14:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9789:40:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4521,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9789:40:16"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "assignments": [
                                        4525
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4525,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4561,
                                            "src": "9851:14:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 4524,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9851:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4529,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 4526,
                                            "name": "poolSecurity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3739,
                                            "src": "9868:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                "typeString": "mapping(address => bytes32)"
                                            }
                                        },
                                        "id": 4528,
                                        "indexExpression": {
                                            "id": 4527,
                                            "name": "security",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4448,
                                            "src": "9881:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9868:22:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "9851:39:16"
                                },
                                {
                                    "expression": {
                                        "id": 4544,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 4530,
                                                    "name": "collateralAmount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3761,
                                                    "src": "9901:16:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                    }
                                                },
                                                "id": 4533,
                                                "indexExpression": {
                                                    "id": 4531,
                                                    "name": "poolId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4525,
                                                    "src": "9918:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "9901:24:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4534,
                                            "indexExpression": {
                                                "id": 4532,
                                                "name": "cashToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4444,
                                                "src": "9926:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "9901:35:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 4537,
                                                            "name": "collateralAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3761,
                                                            "src": "9948:16:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 4539,
                                                        "indexExpression": {
                                                            "id": 4538,
                                                            "name": "poolId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4525,
                                                            "src": "9965:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9948:24:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 4541,
                                                    "indexExpression": {
                                                        "id": 4540,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4444,
                                                        "src": "9973:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "9948:35:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 4542,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4446,
                                                    "src": "9985:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 4535,
                                                    "name": "Math",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2367,
                                                    "src": "9939:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                        "typeString": "type(library Math)"
                                                    }
                                                },
                                                "id": 4536,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2109,
                                                "src": "9939:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 4543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9939:53:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "9901:91:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4545,
                                    "nodeType": "ExpressionStatement",
                                    "src": "9901:91:16"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "hexValue": "6f66666572",
                                                "id": 4547,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10019:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_28bf0e7ef8ed6b6ff710a823b50581926b96df560eed44922320b90d4fca37b4",
                                                    "typeString": "literal_string \"offer\""
                                                },
                                                "value": "offer"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4548,
                                                    "name": "msg",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -15,
                                                    "src": "10028:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_message",
                                                        "typeString": "msg"
                                                    }
                                                },
                                                "id": 4549,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sender",
                                                "nodeType": "MemberAccess",
                                                "src": "10028:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "id": 4550,
                                                "name": "cashToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4444,
                                                "src": "10040:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 4551,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "10051:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 4554,
                                                    "indexExpression": {
                                                        "expression": {
                                                            "id": 4552,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "10069:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 4553,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "10069:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "10051:29:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 4556,
                                                "indexExpression": {
                                                    "id": 4555,
                                                    "name": "cashToken",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4444,
                                                    "src": "10081:9:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "10051:40:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 4557,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "10093:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 4558,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "10093:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_stringliteral_28bf0e7ef8ed6b6ff710a823b50581926b96df560eed44922320b90d4fca37b4",
                                                    "typeString": "literal_string \"offer\""
                                                },
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4546,
                                            "name": "collateral",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3855,
                                            "src": "10008:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                "typeString": "function (bytes32,address,address,int256,uint256)"
                                            }
                                        },
                                        "id": 4559,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10008:101:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4560,
                                    "nodeType": "EmitStatement",
                                    "src": "10003:106:16"
                                }
                            ]
                        },
                        "functionSelector": "59e7e4b1",
                        "id": 4562,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "offerCollateral",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4450,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "9357:8:16"
                        },
                        "parameters": {
                            "id": 4449,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4444,
                                    "mutability": "mutable",
                                    "name": "cashToken",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4562,
                                    "src": "9304:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4443,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9304:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4446,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4562,
                                    "src": "9323:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4445,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9323:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4448,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4562,
                                    "src": "9339:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4447,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9339:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "9303:53:16"
                        },
                        "returnParameters": {
                            "id": 4451,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "9375:0:16"
                        },
                        "scope": 6363,
                        "src": "9279:838:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11461
                        ],
                        "body": {
                            "id": 4620,
                            "nodeType": "Block",
                            "src": "10258:322:16",
                            "statements": [
                                {
                                    "assignments": [
                                        4578
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4578,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4620,
                                            "src": "10269:14:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 4577,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "10269:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4582,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 4579,
                                            "name": "poolSecurity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3739,
                                            "src": "10286:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                "typeString": "mapping(address => bytes32)"
                                            }
                                        },
                                        "id": 4581,
                                        "indexExpression": {
                                            "id": 4580,
                                            "name": "security",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4568,
                                            "src": "10299:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10286:22:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "10269:39:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "id": 4590,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 4584,
                                                            "name": "collateralAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3761,
                                                            "src": "10327:16:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 4586,
                                                        "indexExpression": {
                                                            "id": 4585,
                                                            "name": "poolId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4578,
                                                            "src": "10344:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10327:24:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 4588,
                                                    "indexExpression": {
                                                        "id": 4587,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4564,
                                                        "src": "10352:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "10327:35:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">=",
                                                "rightExpression": {
                                                    "id": 4589,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4566,
                                                    "src": "10366:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "src": "10327:45:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "496e73756666696369656e7420636f6c6c61746572616c20666f7220706f6f6c",
                                                "id": 4591,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "10374:34:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_e1870e947561ed0844e83bc40c37868701467692f8abb79541ab350669325d2e",
                                                    "typeString": "literal_string \"Insufficient collateral for pool\""
                                                },
                                                "value": "Insufficient collateral for pool"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_e1870e947561ed0844e83bc40c37868701467692f8abb79541ab350669325d2e",
                                                    "typeString": "literal_string \"Insufficient collateral for pool\""
                                                }
                                            ],
                                            "id": 4583,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "10319:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 4592,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10319:90:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 4593,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10319:90:16"
                                },
                                {
                                    "expression": {
                                        "id": 4608,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "baseExpression": {
                                                    "id": 4594,
                                                    "name": "collateralAmount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3761,
                                                    "src": "10420:16:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                        "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                    }
                                                },
                                                "id": 4597,
                                                "indexExpression": {
                                                    "id": 4595,
                                                    "name": "poolId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4578,
                                                    "src": "10437:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "10420:24:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 4598,
                                            "indexExpression": {
                                                "id": 4596,
                                                "name": "cashToken",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4564,
                                                "src": "10445:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "10420:35:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 4601,
                                                            "name": "collateralAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3761,
                                                            "src": "10467:16:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 4603,
                                                        "indexExpression": {
                                                            "id": 4602,
                                                            "name": "poolId",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4578,
                                                            "src": "10484:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "10467:24:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 4605,
                                                    "indexExpression": {
                                                        "id": 4604,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4564,
                                                        "src": "10492:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "10467:35:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 4606,
                                                    "name": "amount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4566,
                                                    "src": "10504:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 4599,
                                                    "name": "Math",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2367,
                                                    "src": "10458:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                        "typeString": "type(library Math)"
                                                    }
                                                },
                                                "id": 4600,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2177,
                                                "src": "10458:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 4607,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "10458:53:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "10420:91:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 4609,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10420:91:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "baseExpression": {
                                                    "id": 4614,
                                                    "name": "issuer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3743,
                                                    "src": "10549:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                        "typeString": "mapping(bytes32 => address)"
                                                    }
                                                },
                                                "id": 4616,
                                                "indexExpression": {
                                                    "id": 4615,
                                                    "name": "poolId",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4578,
                                                    "src": "10556:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "10549:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4617,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4566,
                                                "src": "10565:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 4611,
                                                        "name": "cashToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4564,
                                                        "src": "10529:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4610,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "10522:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 4612,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10522:17:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 4613,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2887,
                                            "src": "10522:26:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 4618,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "10522:50:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4619,
                                    "nodeType": "ExpressionStatement",
                                    "src": "10522:50:16"
                                }
                            ]
                        },
                        "functionSelector": "97db1a92",
                        "id": 4621,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 4572,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "10237:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 4573,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "10237:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    {
                                        "id": 4574,
                                        "name": "security",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4568,
                                        "src": "10249:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 4575,
                                "modifierName": {
                                    "id": 4571,
                                    "name": "onlyIssueManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3893,
                                    "src": "10220:16:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$_t_address_$",
                                        "typeString": "modifier (address,address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "10220:38:16"
                            }
                        ],
                        "name": "sendCollateral",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4570,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "10202:8:16"
                        },
                        "parameters": {
                            "id": 4569,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4564,
                                    "mutability": "mutable",
                                    "name": "cashToken",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4621,
                                    "src": "10149:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4563,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10149:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4566,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4621,
                                    "src": "10168:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4565,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10168:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4568,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4621,
                                    "src": "10184:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4567,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10184:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10148:53:16"
                        },
                        "returnParameters": {
                            "id": 4576,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "10258:0:16"
                        },
                        "scope": 6363,
                        "src": "10125:455:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11500
                        ],
                        "body": {
                            "id": 4637,
                            "nodeType": "Block",
                            "src": "10684:60:16",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 4631,
                                                "name": "collateralAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3761,
                                                "src": "10702:16:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                    "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                }
                                            },
                                            "id": 4633,
                                            "indexExpression": {
                                                "id": 4632,
                                                "name": "poolId",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4623,
                                                "src": "10719:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10702:24:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 4635,
                                        "indexExpression": {
                                            "id": 4634,
                                            "name": "currency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4625,
                                            "src": "10727:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10702:34:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 4630,
                                    "id": 4636,
                                    "nodeType": "Return",
                                    "src": "10695:41:16"
                                }
                            ]
                        },
                        "functionSelector": "6f943a09",
                        "id": 4638,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getCollateral",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4627,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "10654:8:16"
                        },
                        "parameters": {
                            "id": 4626,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4623,
                                    "mutability": "mutable",
                                    "name": "poolId",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4638,
                                    "src": "10611:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 4622,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10611:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4625,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4638,
                                    "src": "10627:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4624,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10627:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10610:34:16"
                        },
                        "returnParameters": {
                            "id": 4630,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4629,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4638,
                                    "src": "10676:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4628,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10676:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10675:9:16"
                        },
                        "scope": 6363,
                        "src": "10588:156:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11509
                        ],
                        "body": {
                            "id": 4654,
                            "nodeType": "Block",
                            "src": "10850:60:16",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "baseExpression": {
                                                "id": 4648,
                                                "name": "collateralBalance",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3755,
                                                "src": "10868:17:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                }
                                            },
                                            "id": 4650,
                                            "indexExpression": {
                                                "id": 4649,
                                                "name": "party",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4640,
                                                "src": "10886:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "10868:24:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                "typeString": "mapping(address => int256)"
                                            }
                                        },
                                        "id": 4652,
                                        "indexExpression": {
                                            "id": 4651,
                                            "name": "currency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4642,
                                            "src": "10893:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "10868:34:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "functionReturnParameters": 4647,
                                    "id": 4653,
                                    "nodeType": "Return",
                                    "src": "10861:41:16"
                                }
                            ]
                        },
                        "functionSelector": "a55e8668",
                        "id": 4655,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getUserCollateral",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4644,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "10821:8:16"
                        },
                        "parameters": {
                            "id": 4643,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4640,
                                    "mutability": "mutable",
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4655,
                                    "src": "10779:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4639,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10779:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4642,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4655,
                                    "src": "10794:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4641,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10794:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10778:33:16"
                        },
                        "returnParameters": {
                            "id": 4647,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4646,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4655,
                                    "src": "10843:6:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 4645,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10843:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10842:8:16"
                        },
                        "scope": 6363,
                        "src": "10752:158:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11412
                        ],
                        "body": {
                            "id": 4862,
                            "nodeType": "Block",
                            "src": "11145:2203:16",
                            "statements": [
                                {
                                    "assignments": [
                                        4680
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4680,
                                            "mutability": "mutable",
                                            "name": "order",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4862,
                                            "src": "11156:31:16",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                "typeString": "struct IMarginOrder.order"
                                            },
                                            "typeName": {
                                                "id": 4679,
                                                "name": "IMarginOrder.order",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 11545,
                                                "src": "11156:18:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_order_$11545_storage_ptr",
                                                    "typeString": "struct IMarginOrder.order"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4695,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 4693,
                                                "name": "orderRef",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4661,
                                                "src": "11274:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 4683,
                                                                                "name": "pools",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3735,
                                                                                "src": "11222:5:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                                    "typeString": "mapping(address => mapping(address => address))"
                                                                                }
                                                                            },
                                                                            "id": 4685,
                                                                            "indexExpression": {
                                                                                "id": 4684,
                                                                                "name": "security",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4663,
                                                                                "src": "11228:8:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "11222:15:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                                "typeString": "mapping(address => address)"
                                                                            }
                                                                        },
                                                                        "id": 4687,
                                                                        "indexExpression": {
                                                                            "id": 4686,
                                                                            "name": "currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4667,
                                                                            "src": "11238:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11222:25:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4682,
                                                                    "name": "IMarginTradingPool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 11651,
                                                                    "src": "11203:18:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                                        "typeString": "type(contract IMarginTradingPool)"
                                                                    }
                                                                },
                                                                "id": 4688,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "11203:45:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                                    "typeString": "contract IMarginTradingPool"
                                                                }
                                                            },
                                                            "id": 4689,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getOrderbook",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11635,
                                                            "src": "11203:58:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                "typeString": "function () view external returns (address)"
                                                            }
                                                        },
                                                        "id": 4690,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11203:60:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 4681,
                                                    "name": "IMarginOrder",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11607,
                                                    "src": "11190:12:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                        "typeString": "type(contract IMarginOrder)"
                                                    }
                                                },
                                                "id": 4691,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "11190:74:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                    "typeString": "contract IMarginOrder"
                                                }
                                            },
                                            "id": 4692,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getOrder",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11572,
                                            "src": "11190:83:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                            }
                                        },
                                        "id": 4694,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11190:93:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                            "typeString": "struct IMarginOrder.order memory"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "11156:127:16"
                                },
                                {
                                    "assignments": [
                                        4697
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 4697,
                                            "mutability": "mutable",
                                            "name": "marginCollateral",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4862,
                                            "src": "11294:24:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 4696,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "11294:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 4727,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4702,
                                                        "name": "cashTraded",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4669,
                                                        "src": "11349:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 4704,
                                                                                "name": "pools",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3735,
                                                                                "src": "11380:5:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                                    "typeString": "mapping(address => mapping(address => address))"
                                                                                }
                                                                            },
                                                                            "id": 4706,
                                                                            "indexExpression": {
                                                                                "id": 4705,
                                                                                "name": "security",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4663,
                                                                                "src": "11386:8:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "11380:15:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                                "typeString": "mapping(address => address)"
                                                                            }
                                                                        },
                                                                        "id": 4708,
                                                                        "indexExpression": {
                                                                            "id": 4707,
                                                                            "name": "currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4667,
                                                                            "src": "11396:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11380:25:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4703,
                                                                    "name": "IMarginTradingPool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 11651,
                                                                    "src": "11361:18:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                                        "typeString": "type(contract IMarginTradingPool)"
                                                                    }
                                                                },
                                                                "id": 4709,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "11361:45:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                                    "typeString": "contract IMarginTradingPool"
                                                                }
                                                            },
                                                            "id": 4710,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getMargin",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11640,
                                                            "src": "11361:55:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4711,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11361:57:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 4700,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 780,
                                                        "src": "11330:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$780_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 4701,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 537,
                                                    "src": "11330:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 4712,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "11330:89:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 4715,
                                                        "name": "cashTraded",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4669,
                                                        "src": "11485:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 4717,
                                                                                "name": "pools",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3735,
                                                                                "src": "11516:5:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                                    "typeString": "mapping(address => mapping(address => address))"
                                                                                }
                                                                            },
                                                                            "id": 4719,
                                                                            "indexExpression": {
                                                                                "id": 4718,
                                                                                "name": "security",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4663,
                                                                                "src": "11522:8:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "11516:15:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                                "typeString": "mapping(address => address)"
                                                                            }
                                                                        },
                                                                        "id": 4721,
                                                                        "indexExpression": {
                                                                            "id": 4720,
                                                                            "name": "currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4667,
                                                                            "src": "11532:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11516:25:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4716,
                                                                    "name": "IMarginTradingPool",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 11651,
                                                                    "src": "11497:18:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                                        "typeString": "type(contract IMarginTradingPool)"
                                                                    }
                                                                },
                                                                "id": 4722,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "11497:45:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                                    "typeString": "contract IMarginTradingPool"
                                                                }
                                                            },
                                                            "id": 4723,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getCollateral",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11645,
                                                            "src": "11497:59:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4724,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11497:61:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 4713,
                                                        "name": "FixedPoint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 780,
                                                        "src": "11466:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FixedPoint_$780_$",
                                                            "typeString": "type(library FixedPoint)"
                                                        }
                                                    },
                                                    "id": 4714,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "mulDown",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 537,
                                                    "src": "11466:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                },
                                                "id": 4725,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "11466:93:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 4698,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2367,
                                                "src": "11321:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 4699,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2109,
                                            "src": "11321:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 4726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11321:239:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "11294:266:16"
                                },
                                {
                                    "condition": {
                                        "arguments": [
                                            {
                                                "id": 4729,
                                                "name": "order",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4680,
                                                "src": "11730:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                    "typeString": "struct IMarginOrder.order memory"
                                                }
                                            },
                                            {
                                                "id": 4730,
                                                "name": "party",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4657,
                                                "src": "11737:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4731,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4667,
                                                "src": "11744:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 4732,
                                                "name": "marginCollateral",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4697,
                                                "src": "11754:16:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                    "typeString": "struct IMarginOrder.order memory"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 4728,
                                            "name": "pretradeCheck",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4900,
                                            "src": "11716:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_struct$_order_$11545_memory_ptr_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (struct IMarginOrder.order memory,address,address,uint256) view returns (bool)"
                                            }
                                        },
                                        "id": 4733,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11716:55:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4861,
                                    "nodeType": "IfStatement",
                                    "src": "11713:1628:16",
                                    "trueBody": {
                                        "id": 4860,
                                        "nodeType": "Block",
                                        "src": "11772:1569:16",
                                        "statements": [
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4735,
                                                            "name": "party",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4657,
                                                            "src": "11807:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4736,
                                                            "name": "counterparty",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4659,
                                                            "src": "11814:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4737,
                                                            "name": "security",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4663,
                                                            "src": "11828:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4738,
                                                            "name": "securityTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4665,
                                                            "src": "11838:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4739,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4667,
                                                            "src": "11854:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4740,
                                                            "name": "cashTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4669,
                                                            "src": "11864:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4741,
                                                            "name": "orderRef",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4661,
                                                            "src": "11876:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4742,
                                                                "name": "block",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -4,
                                                                "src": "11886:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_block",
                                                                    "typeString": "block"
                                                                }
                                                            },
                                                            "id": 4743,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "timestamp",
                                                            "nodeType": "MemberAccess",
                                                            "src": "11886:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4734,
                                                        "name": "subscribers",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3827,
                                                        "src": "11795:11:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,address,uint256,address,uint256,bytes32,uint256)"
                                                        }
                                                    },
                                                    "id": 4744,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11795:107:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4745,
                                                "nodeType": "EmitStatement",
                                                "src": "11790:112:16"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 4754,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 4749,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4746,
                                                                "name": "order",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4680,
                                                                "src": "11920:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                    "typeString": "struct IMarginOrder.order memory"
                                                                }
                                                            },
                                                            "id": 4747,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "tokenIn",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11536,
                                                            "src": "11920:13:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 4748,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4667,
                                                            "src": "11935:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "11920:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 4753,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4750,
                                                                "name": "order",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4680,
                                                                "src": "11947:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                    "typeString": "struct IMarginOrder.order memory"
                                                                }
                                                            },
                                                            "id": 4751,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "party",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11542,
                                                            "src": "11947:11:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 4752,
                                                            "name": "party",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4657,
                                                            "src": "11960:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "11947:18:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "11920:45:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 4788,
                                                "nodeType": "IfStatement",
                                                "src": "11917:301:16",
                                                "trueBody": {
                                                    "id": 4787,
                                                    "nodeType": "Block",
                                                    "src": "11966:252:16",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 4772,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 4755,
                                                                            "name": "collateralBalance",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3755,
                                                                            "src": "11985:17:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                            }
                                                                        },
                                                                        "id": 4758,
                                                                        "indexExpression": {
                                                                            "id": 4756,
                                                                            "name": "party",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4657,
                                                                            "src": "12003:5:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "11985:24:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                            "typeString": "mapping(address => int256)"
                                                                        }
                                                                    },
                                                                    "id": 4759,
                                                                    "indexExpression": {
                                                                        "id": 4757,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4667,
                                                                        "src": "12010:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "11985:34:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "baseExpression": {
                                                                                "baseExpression": {
                                                                                    "id": 4762,
                                                                                    "name": "collateralBalance",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "src": "12031:17:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                                    }
                                                                                },
                                                                                "id": 4764,
                                                                                "indexExpression": {
                                                                                    "id": 4763,
                                                                                    "name": "party",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4657,
                                                                                    "src": "12049:5:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "12031:24:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                    "typeString": "mapping(address => int256)"
                                                                                }
                                                                            },
                                                                            "id": 4766,
                                                                            "indexExpression": {
                                                                                "id": 4765,
                                                                                "name": "currency",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4667,
                                                                                "src": "12056:8:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "12031:34:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 4769,
                                                                                    "name": "marginCollateral",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 4697,
                                                                                    "src": "12071:16:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 4768,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "12067:3:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                                    "typeString": "type(int256)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 4767,
                                                                                    "name": "int",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "12067:3:16",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 4770,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "12067:21:16",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 4760,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "12022:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 4761,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2218,
                                                                        "src": "12022:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                                        }
                                                                    },
                                                                    "id": 4771,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "12022:67:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "src": "11985:104:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "id": 4773,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "11985:104:16"
                                                        },
                                                        {
                                                            "eventCall": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "6d61746368",
                                                                        "id": 4775,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "12124:7:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_e9a32e284667c66785eed5eccc480c74fd8dcc5c233935dfbd7732797dfad885",
                                                                            "typeString": "literal_string \"match\""
                                                                        },
                                                                        "value": "match"
                                                                    },
                                                                    {
                                                                        "id": 4776,
                                                                        "name": "party",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4657,
                                                                        "src": "12133:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 4777,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4667,
                                                                        "src": "12140:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 4778,
                                                                                "name": "collateralBalance",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3755,
                                                                                "src": "12150:17:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                                }
                                                                            },
                                                                            "id": 4780,
                                                                            "indexExpression": {
                                                                                "id": 4779,
                                                                                "name": "party",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4657,
                                                                                "src": "12168:5:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "12150:24:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                "typeString": "mapping(address => int256)"
                                                                            }
                                                                        },
                                                                        "id": 4782,
                                                                        "indexExpression": {
                                                                            "id": 4781,
                                                                            "name": "currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4667,
                                                                            "src": "12175:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "12150:34:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4783,
                                                                            "name": "block",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -4,
                                                                            "src": "12186:5:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_block",
                                                                                "typeString": "block"
                                                                            }
                                                                        },
                                                                        "id": 4784,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "12186:15:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_e9a32e284667c66785eed5eccc480c74fd8dcc5c233935dfbd7732797dfad885",
                                                                            "typeString": "literal_string \"match\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4774,
                                                                    "name": "collateral",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3855,
                                                                    "src": "12113:10:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (bytes32,address,address,int256,uint256)"
                                                                    }
                                                                },
                                                                "id": 4785,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12113:89:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 4786,
                                                            "nodeType": "EmitStatement",
                                                            "src": "12108:94:16"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    4790
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4790,
                                                        "mutability": "mutable",
                                                        "name": "buyer",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4860,
                                                        "src": "12269:13:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 4789,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12269:7:16",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4791,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12269:13:16"
                                            },
                                            {
                                                "assignments": [
                                                    4793
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4793,
                                                        "mutability": "mutable",
                                                        "name": "seller",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4860,
                                                        "src": "12297:14:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 4792,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12297:7:16",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4794,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12297:14:16"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 4798,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4795,
                                                            "name": "order",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4680,
                                                            "src": "12329:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                "typeString": "struct IMarginOrder.order memory"
                                                            }
                                                        },
                                                        "id": 4796,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "tokenIn",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11536,
                                                        "src": "12329:13:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "id": 4797,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4667,
                                                        "src": "12344:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "12329:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 4811,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4808,
                                                                "name": "order",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4680,
                                                                "src": "12475:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                    "typeString": "struct IMarginOrder.order memory"
                                                                }
                                                            },
                                                            "id": 4809,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "tokenIn",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11536,
                                                            "src": "12475:13:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 4810,
                                                            "name": "security",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4663,
                                                            "src": "12490:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "12475:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 4821,
                                                    "nodeType": "IfStatement",
                                                    "src": "12472:128:16",
                                                    "trueBody": {
                                                        "id": 4820,
                                                        "nodeType": "Block",
                                                        "src": "12499:101:16",
                                                        "statements": [
                                                            {
                                                                "expression": {
                                                                    "id": 4814,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 4812,
                                                                        "name": "buyer",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4790,
                                                                        "src": "12531:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "id": 4813,
                                                                        "name": "counterparty",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4659,
                                                                        "src": "12539:12:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "src": "12531:20:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 4815,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "12531:20:16"
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 4818,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftHandSide": {
                                                                        "id": 4816,
                                                                        "name": "seller",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4793,
                                                                        "src": "12570:6:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "nodeType": "Assignment",
                                                                    "operator": "=",
                                                                    "rightHandSide": {
                                                                        "id": 4817,
                                                                        "name": "party",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4657,
                                                                        "src": "12579:5:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "src": "12570:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 4819,
                                                                "nodeType": "ExpressionStatement",
                                                                "src": "12570:14:16"
                                                            }
                                                        ]
                                                    }
                                                },
                                                "id": 4822,
                                                "nodeType": "IfStatement",
                                                "src": "12326:274:16",
                                                "trueBody": {
                                                    "id": 4807,
                                                    "nodeType": "Block",
                                                    "src": "12353:100:16",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 4801,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 4799,
                                                                    "name": "buyer",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4790,
                                                                    "src": "12384:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 4800,
                                                                    "name": "party",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4657,
                                                                    "src": "12392:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "12384:13:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 4802,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "12384:13:16"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4805,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 4803,
                                                                    "name": "seller",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4793,
                                                                    "src": "12416:6:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 4804,
                                                                    "name": "counterparty",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4659,
                                                                    "src": "12425:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "12416:21:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 4806,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "12416:21:16"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    4826
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4826,
                                                        "mutability": "mutable",
                                                        "name": "position",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4860,
                                                        "src": "12614:44:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition"
                                                        },
                                                        "typeName": {
                                                            "id": 4825,
                                                            "name": "IMarginManager.tradePosition",
                                                            "nodeType": "UserDefinedTypeName",
                                                            "referencedDeclaration": 11372,
                                                            "src": "12614:28:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4837,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4829,
                                                            "name": "buyer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4790,
                                                            "src": "12919:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4830,
                                                            "name": "seller",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4793,
                                                            "src": "12952:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4831,
                                                            "name": "securityTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4665,
                                                            "src": "12994:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4832,
                                                            "name": "cashTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4669,
                                                            "src": "13040:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4833,
                                                            "name": "orderRef",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4661,
                                                            "src": "13086:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4834,
                                                            "name": "marginCollateral",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4697,
                                                            "src": "13132:16:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 4835,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13179:1:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4827,
                                                            "name": "IMarginManager",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11517,
                                                            "src": "12661:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarginManager_$11517_$",
                                                                "typeString": "type(contract IMarginManager)"
                                                            }
                                                        },
                                                        "id": 4828,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "tradePosition",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11372,
                                                        "src": "12661:28:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_tradePosition_$11372_storage_ptr_$",
                                                            "typeString": "type(struct IMarginManager.tradePosition storage pointer)"
                                                        }
                                                    },
                                                    "id": 4836,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "buyer",
                                                        "seller",
                                                        "securityAmount",
                                                        "cashAmount",
                                                        "orderReference",
                                                        "marginCollateral",
                                                        "timestamp"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12661:535:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12614:582:16"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4844,
                                                            "name": "position",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4826,
                                                            "src": "13246:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 4838,
                                                                    "name": "positions",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3775,
                                                                    "src": "13211:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                    }
                                                                },
                                                                "id": 4841,
                                                                "indexExpression": {
                                                                    "id": 4839,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4663,
                                                                    "src": "13221:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "13211:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                    "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                }
                                                            },
                                                            "id": 4842,
                                                            "indexExpression": {
                                                                "id": 4840,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4667,
                                                                "src": "13231:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "13211:29:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 4843,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "push",
                                                        "nodeType": "MemberAccess",
                                                        "src": "13211:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_tradePosition_$11372_storage_$returns$__$",
                                                            "typeString": "function (struct IMarginManager.tradePosition storage ref)"
                                                        }
                                                    },
                                                    "id": 4845,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13211:44:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4846,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13211:44:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4858,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4847,
                                                            "name": "orders",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3785,
                                                            "src": "13270:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 4849,
                                                        "indexExpression": {
                                                            "id": 4848,
                                                            "name": "orderRef",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4661,
                                                            "src": "13277:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "13270:16:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 4857,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 4850,
                                                                        "name": "positions",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3775,
                                                                        "src": "13289:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                        }
                                                                    },
                                                                    "id": 4852,
                                                                    "indexExpression": {
                                                                        "id": 4851,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4663,
                                                                        "src": "13299:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "13289:19:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                        "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                    }
                                                                },
                                                                "id": 4854,
                                                                "indexExpression": {
                                                                    "id": 4853,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4667,
                                                                    "src": "13309:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "13289:29:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                    "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                }
                                                            },
                                                            "id": 4855,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "length",
                                                            "nodeType": "MemberAccess",
                                                            "src": "13289:36:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "hexValue": "31",
                                                            "id": 4856,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13328:1:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                "typeString": "int_const 1"
                                                            },
                                                            "value": "1"
                                                        },
                                                        "src": "13289:40:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "13270:59:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4859,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13270:59:16"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "2b06b510",
                        "id": 4863,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 4673,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "11133:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 4674,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "11133:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    }
                                ],
                                "id": 4675,
                                "modifierName": {
                                    "id": 4672,
                                    "name": "onlyBridge",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3921,
                                    "src": "11122:10:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$",
                                        "typeString": "modifier (address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "11122:22:16"
                            }
                        ],
                        "name": "onMatch",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4671,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "11113:8:16"
                        },
                        "parameters": {
                            "id": 4670,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4657,
                                    "mutability": "mutable",
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "10939:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4656,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10939:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4659,
                                    "mutability": "mutable",
                                    "name": "counterparty",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "10954:20:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4658,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10954:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4661,
                                    "mutability": "mutable",
                                    "name": "orderRef",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "10976:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 4660,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10976:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4663,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "10994:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4662,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10994:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4665,
                                    "mutability": "mutable",
                                    "name": "securityTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "11012:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4664,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11012:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4667,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "11036:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4666,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11036:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4669,
                                    "mutability": "mutable",
                                    "name": "cashTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4863,
                                    "src": "11054:18:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4668,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11054:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "10938:135:16"
                        },
                        "returnParameters": {
                            "id": 4676,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "11145:0:16"
                        },
                        "scope": 6363,
                        "src": "10922:2426:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 4899,
                            "nodeType": "Block",
                            "src": "13501:235:16",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 4879,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 4876,
                                                "name": "order",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4865,
                                                "src": "13515:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                    "typeString": "struct IMarginOrder.order memory"
                                                }
                                            },
                                            "id": 4877,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "tokenIn",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11536,
                                            "src": "13515:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                            "id": 4878,
                                            "name": "currency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4869,
                                            "src": "13530:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "13515:23:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 4896,
                                    "nodeType": "IfStatement",
                                    "src": "13512:195:16",
                                    "trueBody": {
                                        "id": 4895,
                                        "nodeType": "Block",
                                        "src": "13539:168:16",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 4889,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 4880,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "13557:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 4882,
                                                            "indexExpression": {
                                                                "id": 4881,
                                                                "name": "party",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4867,
                                                                "src": "13575:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "13557:24:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 4884,
                                                        "indexExpression": {
                                                            "id": 4883,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4869,
                                                            "src": "13582:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "13557:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 4887,
                                                                "name": "marginCollateral",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4871,
                                                                "src": "13599:16:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 4886,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "13595:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                "typeString": "type(int256)"
                                                            },
                                                            "typeName": {
                                                                "id": 4885,
                                                                "name": "int",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "13595:3:16",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 4888,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "13595:21:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "13557:59:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "hexValue": "66616c7365",
                                                        "id": 4892,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "13690:5:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "functionReturnParameters": 4875,
                                                    "id": 4893,
                                                    "nodeType": "Return",
                                                    "src": "13683:12:16"
                                                },
                                                "id": 4894,
                                                "nodeType": "IfStatement",
                                                "src": "13554:141:16",
                                                "trueBody": {
                                                    "expression": {
                                                        "hexValue": "74727565",
                                                        "id": 4890,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "13642:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "functionReturnParameters": 4875,
                                                    "id": 4891,
                                                    "nodeType": "Return",
                                                    "src": "13635:11:16"
                                                }
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "hexValue": "74727565",
                                        "id": 4897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13724:4:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "functionReturnParameters": 4875,
                                    "id": 4898,
                                    "nodeType": "Return",
                                    "src": "13717:11:16"
                                }
                            ]
                        },
                        "id": 4900,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "pretradeCheck",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 4872,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4865,
                                    "mutability": "mutable",
                                    "name": "order",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4900,
                                    "src": "13383:31:16",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                        "typeString": "struct IMarginOrder.order"
                                    },
                                    "typeName": {
                                        "id": 4864,
                                        "name": "IMarginOrder.order",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 11545,
                                        "src": "13383:18:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_order_$11545_storage_ptr",
                                            "typeString": "struct IMarginOrder.order"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4867,
                                    "mutability": "mutable",
                                    "name": "party",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4900,
                                    "src": "13416:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4866,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13416:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4869,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4900,
                                    "src": "13431:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4868,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13431:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4871,
                                    "mutability": "mutable",
                                    "name": "marginCollateral",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4900,
                                    "src": "13449:24:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4870,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13449:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "13382:92:16"
                        },
                        "returnParameters": {
                            "id": 4875,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4874,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 4900,
                                    "src": "13496:4:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 4873,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13496:4:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "13495:6:16"
                        },
                        "scope": 6363,
                        "src": "13360:376:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            11429
                        ],
                        "body": {
                            "id": 5168,
                            "nodeType": "Block",
                            "src": "13936:2182:16",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 4928,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 4924,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 4922,
                                                "name": "securityTraded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4908,
                                                "src": "13950:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 4923,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13966:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "13950:17:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 4927,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 4925,
                                                "name": "currencyTraded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4912,
                                                "src": "13971:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "!=",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 4926,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13987:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "13971:17:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "13950:38:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "id": 5166,
                                        "nodeType": "Block",
                                        "src": "15146:965:16",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5040
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5040,
                                                        "mutability": "mutable",
                                                        "name": "position",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5166,
                                                        "src": "15204:44:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition"
                                                        },
                                                        "typeName": {
                                                            "id": 5039,
                                                            "name": "IMarginManager.tradePosition",
                                                            "nodeType": "UserDefinedTypeName",
                                                            "referencedDeclaration": 11372,
                                                            "src": "15204:28:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5041,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "15204:44:16"
                                            },
                                            {
                                                "assignments": [
                                                    5043
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5043,
                                                        "mutability": "mutable",
                                                        "name": "pos",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5166,
                                                        "src": "15263:11:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5042,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "15263:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5047,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 5044,
                                                        "name": "orders",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3785,
                                                        "src": "15277:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                            "typeString": "mapping(bytes32 => uint256)"
                                                        }
                                                    },
                                                    "id": 5046,
                                                    "indexExpression": {
                                                        "id": 5045,
                                                        "name": "ref",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4902,
                                                        "src": "15284:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "15277:11:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "15263:25:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5056,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5048,
                                                        "name": "position",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5040,
                                                        "src": "15303:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5049,
                                                                    "name": "positions",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3775,
                                                                    "src": "15314:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                    }
                                                                },
                                                                "id": 5051,
                                                                "indexExpression": {
                                                                    "id": 5050,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4906,
                                                                    "src": "15324:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15314:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                    "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                }
                                                            },
                                                            "id": 5053,
                                                            "indexExpression": {
                                                                "id": 5052,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "15334:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15314:29:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 5055,
                                                        "indexExpression": {
                                                            "id": 5054,
                                                            "name": "pos",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5043,
                                                            "src": "15344:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15314:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref"
                                                        }
                                                    },
                                                    "src": "15303:45:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                    }
                                                },
                                                "id": 5057,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15303:45:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5078,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5058,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "15363:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5062,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 5059,
                                                                    "name": "position",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5040,
                                                                    "src": "15381:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                    }
                                                                },
                                                                "id": 5060,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "buyer",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11359,
                                                                "src": "15381:14:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15363:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5063,
                                                        "indexExpression": {
                                                            "id": 5061,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "15397:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15363:43:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 5066,
                                                                        "name": "collateralBalance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3755,
                                                                        "src": "15418:17:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                        }
                                                                    },
                                                                    "id": 5069,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 5067,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5040,
                                                                            "src": "15436:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5068,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "buyer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11359,
                                                                        "src": "15436:14:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "15418:33:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                        "typeString": "mapping(address => int256)"
                                                                    }
                                                                },
                                                                "id": 5071,
                                                                "indexExpression": {
                                                                    "id": 5070,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4910,
                                                                    "src": "15452:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15418:43:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5074,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5040,
                                                                            "src": "15467:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5075,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "marginCollateral",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11369,
                                                                        "src": "15467:25:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5073,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "15463:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5072,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "15463:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5076,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "15463:30:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 5064,
                                                                "name": "Math",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2367,
                                                                "src": "15409:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                    "typeString": "type(library Math)"
                                                                }
                                                            },
                                                            "id": 5065,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "add",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2150,
                                                            "src": "15409:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                            }
                                                        },
                                                        "id": 5077,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15409:85:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15363:131:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "id": 5079,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15363:131:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5087,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "delete",
                                                    "prefix": true,
                                                    "src": "15509:41:16",
                                                    "subExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5080,
                                                                    "name": "positions",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3775,
                                                                    "src": "15516:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                    }
                                                                },
                                                                "id": 5082,
                                                                "indexExpression": {
                                                                    "id": 5081,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4906,
                                                                    "src": "15526:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15516:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                    "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                }
                                                            },
                                                            "id": 5084,
                                                            "indexExpression": {
                                                                "id": 5083,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "15536:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15516:29:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 5086,
                                                        "indexExpression": {
                                                            "id": 5085,
                                                            "name": "pos",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5043,
                                                            "src": "15546:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15516:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5088,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15509:41:16"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "7472616465",
                                                            "id": 5090,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "15581:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                "typeString": "literal_string \"trade\""
                                                            },
                                                            "value": "trade"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5091,
                                                                "name": "position",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5040,
                                                                "src": "15590:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                }
                                                            },
                                                            "id": 5092,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "buyer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11359,
                                                            "src": "15590:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5093,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "15606:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5094,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "15616:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5097,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 5095,
                                                                        "name": "position",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5040,
                                                                        "src": "15634:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                        }
                                                                    },
                                                                    "id": 5096,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "buyer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 11359,
                                                                    "src": "15634:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15616:33:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5099,
                                                            "indexExpression": {
                                                                "id": 5098,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "15650:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15616:43:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5100,
                                                                "name": "block",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -4,
                                                                "src": "15661:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_block",
                                                                    "typeString": "block"
                                                                }
                                                            },
                                                            "id": 5101,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "timestamp",
                                                            "nodeType": "MemberAccess",
                                                            "src": "15661:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                "typeString": "literal_string \"trade\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5089,
                                                        "name": "collateral",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3855,
                                                        "src": "15570:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (bytes32,address,address,int256,uint256)"
                                                        }
                                                    },
                                                    "id": 5102,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15570:107:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5103,
                                                "nodeType": "EmitStatement",
                                                "src": "15565:112:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5108,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5104,
                                                        "name": "pos",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5043,
                                                        "src": "15692:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "baseExpression": {
                                                            "id": 5105,
                                                            "name": "orders",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3785,
                                                            "src": "15698:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 5107,
                                                        "indexExpression": {
                                                            "id": 5106,
                                                            "name": "cref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4904,
                                                            "src": "15705:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15698:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "15692:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5109,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15692:18:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5118,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5110,
                                                        "name": "position",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5040,
                                                        "src": "15725:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5111,
                                                                    "name": "positions",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3775,
                                                                    "src": "15736:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                    }
                                                                },
                                                                "id": 5113,
                                                                "indexExpression": {
                                                                    "id": 5112,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4906,
                                                                    "src": "15746:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15736:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                    "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                }
                                                            },
                                                            "id": 5115,
                                                            "indexExpression": {
                                                                "id": 5114,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "15756:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15736:29:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 5117,
                                                        "indexExpression": {
                                                            "id": 5116,
                                                            "name": "pos",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5043,
                                                            "src": "15766:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15736:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref"
                                                        }
                                                    },
                                                    "src": "15725:45:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                    }
                                                },
                                                "id": 5119,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15725:45:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5140,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5120,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "15785:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5124,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 5121,
                                                                    "name": "position",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5040,
                                                                    "src": "15803:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                    }
                                                                },
                                                                "id": 5122,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "buyer",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11359,
                                                                "src": "15803:14:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15785:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5125,
                                                        "indexExpression": {
                                                            "id": 5123,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "15819:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15785:43:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 5128,
                                                                        "name": "collateralBalance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3755,
                                                                        "src": "15840:17:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                        }
                                                                    },
                                                                    "id": 5131,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 5129,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5040,
                                                                            "src": "15858:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5130,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "buyer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11359,
                                                                        "src": "15858:14:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "15840:33:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                        "typeString": "mapping(address => int256)"
                                                                    }
                                                                },
                                                                "id": 5133,
                                                                "indexExpression": {
                                                                    "id": 5132,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4910,
                                                                    "src": "15874:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15840:43:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5136,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5040,
                                                                            "src": "15889:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5137,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "marginCollateral",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11369,
                                                                        "src": "15889:25:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5135,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "15885:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5134,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "15885:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5138,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "15885:30:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 5126,
                                                                "name": "Math",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2367,
                                                                "src": "15831:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                    "typeString": "type(library Math)"
                                                                }
                                                            },
                                                            "id": 5127,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "add",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2150,
                                                            "src": "15831:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                            }
                                                        },
                                                        "id": 5139,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "15831:85:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15785:131:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "id": 5141,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15785:131:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5149,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "delete",
                                                    "prefix": true,
                                                    "src": "15931:41:16",
                                                    "subExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5142,
                                                                    "name": "positions",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3775,
                                                                    "src": "15938:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                        "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                    }
                                                                },
                                                                "id": 5144,
                                                                "indexExpression": {
                                                                    "id": 5143,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4906,
                                                                    "src": "15948:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15938:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                    "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                }
                                                            },
                                                            "id": 5146,
                                                            "indexExpression": {
                                                                "id": 5145,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "15958:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15938:29:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                            }
                                                        },
                                                        "id": 5148,
                                                        "indexExpression": {
                                                            "id": 5147,
                                                            "name": "pos",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5043,
                                                            "src": "15968:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "15938:34:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5150,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15931:41:16"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "7472616465",
                                                            "id": 5152,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16003:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                "typeString": "literal_string \"trade\""
                                                            },
                                                            "value": "trade"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5153,
                                                                "name": "position",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5040,
                                                                "src": "16012:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                }
                                                            },
                                                            "id": 5154,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "buyer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11359,
                                                            "src": "16012:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5155,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "16028:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5156,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "16038:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5159,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 5157,
                                                                        "name": "position",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5040,
                                                                        "src": "16056:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                        }
                                                                    },
                                                                    "id": 5158,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "buyer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 11359,
                                                                    "src": "16056:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "16038:33:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5161,
                                                            "indexExpression": {
                                                                "id": 5160,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "16072:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "16038:43:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5162,
                                                                "name": "block",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -4,
                                                                "src": "16083:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_block",
                                                                    "typeString": "block"
                                                                }
                                                            },
                                                            "id": 5163,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "timestamp",
                                                            "nodeType": "MemberAccess",
                                                            "src": "16083:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                "typeString": "literal_string \"trade\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5151,
                                                        "name": "collateral",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3855,
                                                        "src": "15992:10:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (bytes32,address,address,int256,uint256)"
                                                        }
                                                    },
                                                    "id": 5164,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15992:107:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5165,
                                                "nodeType": "EmitStatement",
                                                "src": "15987:112:16"
                                            }
                                        ]
                                    },
                                    "id": 5167,
                                    "nodeType": "IfStatement",
                                    "src": "13947:2164:16",
                                    "trueBody": {
                                        "id": 5036,
                                        "nodeType": "Block",
                                        "src": "13989:1143:16",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4930
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4930,
                                                        "mutability": "mutable",
                                                        "name": "pay",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5036,
                                                        "src": "14074:11:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4929,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14074:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4940,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 4932,
                                                                    "name": "pools",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3735,
                                                                    "src": "14101:5:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                        "typeString": "mapping(address => mapping(address => address))"
                                                                    }
                                                                },
                                                                "id": 4934,
                                                                "indexExpression": {
                                                                    "id": 4933,
                                                                    "name": "security",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4906,
                                                                    "src": "14107:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "14101:15:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                    "typeString": "mapping(address => address)"
                                                                }
                                                            },
                                                            "id": 4936,
                                                            "indexExpression": {
                                                                "id": 4935,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4910,
                                                                "src": "14117:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "14101:25:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4937,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "14128:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4938,
                                                            "name": "currencyTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4912,
                                                            "src": "14138:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4931,
                                                        "name": "calculateFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5279,
                                                        "src": "14088:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (address,address,uint256) returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4939,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14088:65:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "14074:79:16"
                                            },
                                            {
                                                "assignments": [
                                                    4942
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4942,
                                                        "mutability": "mutable",
                                                        "name": "orderbook",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5036,
                                                        "src": "14168:17:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 4941,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14168:7:16",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4952,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 4944,
                                                                            "name": "pools",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3735,
                                                                            "src": "14207:5:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                                                                "typeString": "mapping(address => mapping(address => address))"
                                                                            }
                                                                        },
                                                                        "id": 4946,
                                                                        "indexExpression": {
                                                                            "id": 4945,
                                                                            "name": "security",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4906,
                                                                            "src": "14213:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "14207:15:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                                            "typeString": "mapping(address => address)"
                                                                        }
                                                                    },
                                                                    "id": 4948,
                                                                    "indexExpression": {
                                                                        "id": 4947,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4910,
                                                                        "src": "14223:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "14207:25:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 4943,
                                                                "name": "IMarginTradingPool",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 11651,
                                                                "src": "14188:18:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                                    "typeString": "type(contract IMarginTradingPool)"
                                                                }
                                                            },
                                                            "id": 4949,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14188:45:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                                "typeString": "contract IMarginTradingPool"
                                                            }
                                                        },
                                                        "id": 4950,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "getOrderbook",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11635,
                                                        "src": "14188:58:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                            "typeString": "function () view external returns (address)"
                                                        }
                                                    },
                                                    "id": 4951,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14188:60:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "14168:80:16"
                                            },
                                            {
                                                "assignments": [
                                                    4954
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4954,
                                                        "mutability": "mutable",
                                                        "name": "party",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5036,
                                                        "src": "14263:13:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 4953,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14263:7:16",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4979,
                                                "initialValue": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 4963,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4959,
                                                                        "name": "ref",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4902,
                                                                        "src": "14312:3:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 4956,
                                                                                "name": "orderbook",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4942,
                                                                                "src": "14292:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 4955,
                                                                            "name": "IMarginOrder",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 11607,
                                                                            "src": "14279:12:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                                "typeString": "type(contract IMarginOrder)"
                                                                            }
                                                                        },
                                                                        "id": 4957,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "14279:23:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                            "typeString": "contract IMarginOrder"
                                                                        }
                                                                    },
                                                                    "id": 4958,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getOrder",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 11572,
                                                                    "src": "14279:32:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                        "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                    }
                                                                },
                                                                "id": 4960,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "14279:37:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                    "typeString": "struct IMarginOrder.order memory"
                                                                }
                                                            },
                                                            "id": 4961,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "tokenIn",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11536,
                                                            "src": "14279:45:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "id": 4962,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4910,
                                                            "src": "14326:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "14279:55:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4975,
                                                                    "name": "cref",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4904,
                                                                    "src": "14499:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 4972,
                                                                            "name": "orderbook",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4942,
                                                                            "src": "14479:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 4971,
                                                                        "name": "IMarginOrder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 11607,
                                                                        "src": "14466:12:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                            "typeString": "type(contract IMarginOrder)"
                                                                        }
                                                                    },
                                                                    "id": 4973,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14466:23:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                        "typeString": "contract IMarginOrder"
                                                                    }
                                                                },
                                                                "id": 4974,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "getOrder",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11572,
                                                                "src": "14466:32:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                    "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                }
                                                            },
                                                            "id": 4976,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14466:38:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                "typeString": "struct IMarginOrder.order memory"
                                                            }
                                                        },
                                                        "id": 4977,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "party",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11542,
                                                        "src": "14466:44:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 4978,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "14279:231:16",
                                                    "trueExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4968,
                                                                    "name": "ref",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4902,
                                                                    "src": "14412:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 4965,
                                                                            "name": "orderbook",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4942,
                                                                            "src": "14392:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 4964,
                                                                        "name": "IMarginOrder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 11607,
                                                                        "src": "14379:12:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                            "typeString": "type(contract IMarginOrder)"
                                                                        }
                                                                    },
                                                                    "id": 4966,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14379:23:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                        "typeString": "contract IMarginOrder"
                                                                    }
                                                                },
                                                                "id": 4967,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "getOrder",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11572,
                                                                "src": "14379:32:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                    "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                }
                                                            },
                                                            "id": 4969,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14379:37:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                "typeString": "struct IMarginOrder.order memory"
                                                            }
                                                        },
                                                        "id": 4970,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "party",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11542,
                                                        "src": "14379:43:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "14263:247:16"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4984,
                                                            "name": "ref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4902,
                                                            "src": "14561:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4985,
                                                            "name": "cref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4904,
                                                            "src": "14566:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4986,
                                                            "name": "securityTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4908,
                                                            "src": "14572:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4987,
                                                            "name": "currencyTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4912,
                                                            "src": "14588:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4988,
                                                                "name": "block",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -4,
                                                                "src": "14604:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_block",
                                                                    "typeString": "block"
                                                                }
                                                            },
                                                            "id": 4989,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "timestamp",
                                                            "nodeType": "MemberAccess",
                                                            "src": "14604:15:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 4981,
                                                                    "name": "orderbook",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4942,
                                                                    "src": "14538:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 4980,
                                                                "name": "IMarginOrder",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 11607,
                                                                "src": "14525:12:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                    "typeString": "type(contract IMarginOrder)"
                                                                }
                                                            },
                                                            "id": 4982,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14525:23:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                "typeString": "contract IMarginOrder"
                                                            }
                                                        },
                                                        "id": 4983,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "reportTrade",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11606,
                                                        "src": "14525:35:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                            "typeString": "function (bytes32,bytes32,uint256,uint256,uint256) external"
                                                        }
                                                    },
                                                    "id": 4990,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14525:95:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4991,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14525:95:16"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4993,
                                                            "name": "orderbook",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4942,
                                                            "src": "14647:9:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4994,
                                                            "name": "ref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4902,
                                                            "src": "14658:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4995,
                                                            "name": "cref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4904,
                                                            "src": "14663:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4996,
                                                            "name": "securityTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4908,
                                                            "src": "14669:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4997,
                                                            "name": "currencyTraded",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4912,
                                                            "src": "14685:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4998,
                                                            "name": "party",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4954,
                                                            "src": "14701:5:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4999,
                                                            "name": "pay",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4930,
                                                            "src": "14708:3:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4992,
                                                        "name": "tradeReport",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5237,
                                                        "src": "14635:11:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,bytes32,bytes32,uint256,uint256,address,uint256)"
                                                        }
                                                    },
                                                    "id": 5000,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14635:77:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5001,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14635:77:16"
                                            },
                                            {
                                                "assignments": [
                                                    5003
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5003,
                                                        "mutability": "mutable",
                                                        "name": "pos",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5036,
                                                        "src": "14727:11:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5002,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14727:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5007,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 5004,
                                                        "name": "orders",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3785,
                                                        "src": "14741:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                            "typeString": "mapping(bytes32 => uint256)"
                                                        }
                                                    },
                                                    "id": 5006,
                                                    "indexExpression": {
                                                        "id": 5005,
                                                        "name": "ref",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4902,
                                                        "src": "14748:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "14741:11:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "14727:25:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5017,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 5008,
                                                                        "name": "positions",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3775,
                                                                        "src": "14890:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                        }
                                                                    },
                                                                    "id": 5012,
                                                                    "indexExpression": {
                                                                        "id": 5009,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4906,
                                                                        "src": "14900:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "14890:19:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                        "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                    }
                                                                },
                                                                "id": 5013,
                                                                "indexExpression": {
                                                                    "id": 5010,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4910,
                                                                    "src": "14910:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "14890:29:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                    "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                }
                                                            },
                                                            "id": 5014,
                                                            "indexExpression": {
                                                                "id": 5011,
                                                                "name": "pos",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5003,
                                                                "src": "14920:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "14890:34:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref"
                                                            }
                                                        },
                                                        "id": 5015,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "timestamp",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11371,
                                                        "src": "14890:44:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5016,
                                                        "name": "executionTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4914,
                                                        "src": "14937:13:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "14890:60:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5018,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14890:60:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5023,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5019,
                                                        "name": "pos",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5003,
                                                        "src": "14965:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "baseExpression": {
                                                            "id": 5020,
                                                            "name": "orders",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3785,
                                                            "src": "14971:6:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
                                                                "typeString": "mapping(bytes32 => uint256)"
                                                            }
                                                        },
                                                        "id": 5022,
                                                        "indexExpression": {
                                                            "id": 5021,
                                                            "name": "cref",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4904,
                                                            "src": "14978:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "14971:12:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "14965:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5024,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14965:18:16"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5034,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "expression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 5025,
                                                                        "name": "positions",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3775,
                                                                        "src": "15060:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                        }
                                                                    },
                                                                    "id": 5029,
                                                                    "indexExpression": {
                                                                        "id": 5026,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4906,
                                                                        "src": "15070:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "15060:19:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                        "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                    }
                                                                },
                                                                "id": 5030,
                                                                "indexExpression": {
                                                                    "id": 5027,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4910,
                                                                    "src": "15080:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15060:29:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                                    "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                }
                                                            },
                                                            "id": 5031,
                                                            "indexExpression": {
                                                                "id": 5028,
                                                                "name": "pos",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5003,
                                                                "src": "15090:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "15060:34:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                                "typeString": "struct IMarginManager.tradePosition storage ref"
                                                            }
                                                        },
                                                        "id": 5032,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "memberName": "timestamp",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11371,
                                                        "src": "15060:44:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5033,
                                                        "name": "executionTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4914,
                                                        "src": "15107:13:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "15060:60:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5035,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15060:60:16"
                                            }
                                        ]
                                    }
                                }
                            ]
                        },
                        "functionSelector": "6b0fd140",
                        "id": 5169,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 4918,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "13924:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 4919,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "13924:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    }
                                ],
                                "id": 4920,
                                "modifierName": {
                                    "id": 4917,
                                    "name": "onlyBridge",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3921,
                                    "src": "13913:10:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$",
                                        "typeString": "modifier (address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "13913:22:16"
                            }
                        ],
                        "name": "onTrade",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 4916,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "13904:8:16"
                        },
                        "parameters": {
                            "id": 4915,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 4902,
                                    "mutability": "mutable",
                                    "name": "ref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13761:11:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 4901,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13761:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4904,
                                    "mutability": "mutable",
                                    "name": "cref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13774:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 4903,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13774:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4906,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13788:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4905,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13788:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4908,
                                    "mutability": "mutable",
                                    "name": "securityTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13806:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4907,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13806:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4910,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13830:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 4909,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13830:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4912,
                                    "mutability": "mutable",
                                    "name": "currencyTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13848:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4911,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13848:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 4914,
                                    "mutability": "mutable",
                                    "name": "executionTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5169,
                                    "src": "13872:21:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 4913,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13872:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "13760:134:16"
                        },
                        "returnParameters": {
                            "id": 4921,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "13936:0:16"
                        },
                        "scope": 6363,
                        "src": "13744:2374:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 5236,
                            "nodeType": "Block",
                            "src": "16307:589:16",
                            "statements": [
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5188,
                                                                "name": "orderbook",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5171,
                                                                "src": "16364:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5187,
                                                            "name": "IMarginOrder",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11607,
                                                            "src": "16351:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                "typeString": "type(contract IMarginOrder)"
                                                            }
                                                        },
                                                        "id": 5189,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16351:23:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                            "typeString": "contract IMarginOrder"
                                                        }
                                                    },
                                                    "id": 5190,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getPoolId",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 11555,
                                                    "src": "16351:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                                        "typeString": "function () view external returns (bytes32)"
                                                    }
                                                },
                                                "id": 5191,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16351:35:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 5200,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 5196,
                                                                    "name": "ref",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5173,
                                                                    "src": "16434:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5193,
                                                                            "name": "orderbook",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5171,
                                                                            "src": "16414:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 5192,
                                                                        "name": "IMarginOrder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 11607,
                                                                        "src": "16401:12:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                            "typeString": "type(contract IMarginOrder)"
                                                                        }
                                                                    },
                                                                    "id": 5194,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "16401:23:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                        "typeString": "contract IMarginOrder"
                                                                    }
                                                                },
                                                                "id": 5195,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "getOrder",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11572,
                                                                "src": "16401:32:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                    "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                }
                                                            },
                                                            "id": 5197,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16401:37:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                "typeString": "struct IMarginOrder.order memory"
                                                            }
                                                        },
                                                        "id": 5198,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "party",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 11542,
                                                        "src": "16401:43:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "id": 5199,
                                                        "name": "buyer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5181,
                                                        "src": "16446:5:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "16401:50:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseExpression": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5212,
                                                                "name": "ref",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5173,
                                                                "src": "16600:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5209,
                                                                        "name": "orderbook",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5171,
                                                                        "src": "16580:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 5208,
                                                                    "name": "IMarginOrder",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 11607,
                                                                    "src": "16567:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                        "typeString": "type(contract IMarginOrder)"
                                                                    }
                                                                },
                                                                "id": 5210,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "16567:23:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                    "typeString": "contract IMarginOrder"
                                                                }
                                                            },
                                                            "id": 5211,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getOrder",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11572,
                                                            "src": "16567:32:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                            }
                                                        },
                                                        "id": 5213,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16567:37:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                            "typeString": "struct IMarginOrder.order memory"
                                                        }
                                                    },
                                                    "id": 5214,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "party",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 11542,
                                                    "src": "16567:43:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 5215,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "Conditional",
                                                "src": "16401:209:16",
                                                "trueExpression": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5205,
                                                                "name": "cref",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5175,
                                                                "src": "16520:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5202,
                                                                        "name": "orderbook",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5171,
                                                                        "src": "16500:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 5201,
                                                                    "name": "IMarginOrder",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 11607,
                                                                    "src": "16487:12:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                        "typeString": "type(contract IMarginOrder)"
                                                                    }
                                                                },
                                                                "id": 5203,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "16487:23:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                                    "typeString": "contract IMarginOrder"
                                                                }
                                                            },
                                                            "id": 5204,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "getOrder",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11572,
                                                            "src": "16487:32:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_struct$_order_$11545_memory_ptr_$",
                                                                "typeString": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                            }
                                                        },
                                                        "id": 5206,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16487:38:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                            "typeString": "struct IMarginOrder.order memory"
                                                        }
                                                    },
                                                    "id": 5207,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "party",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 11542,
                                                    "src": "16487:44:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5216,
                                                "name": "buyer",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5181,
                                                "src": "16625:5:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5217,
                                                "name": "securityTraded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5177,
                                                "src": "16645:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5219,
                                                                "name": "orderbook",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5171,
                                                                "src": "16687:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5218,
                                                            "name": "IMarginOrder",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11607,
                                                            "src": "16674:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                "typeString": "type(contract IMarginOrder)"
                                                            }
                                                        },
                                                        "id": 5220,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16674:23:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                            "typeString": "contract IMarginOrder"
                                                        }
                                                    },
                                                    "id": 5221,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getSecurity",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 11560,
                                                    "src": "16674:35:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                        "typeString": "function () view external returns (address)"
                                                    }
                                                },
                                                "id": 5222,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16674:37:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "arguments": [],
                                                "expression": {
                                                    "argumentTypes": [],
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5224,
                                                                "name": "orderbook",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5171,
                                                                "src": "16739:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5223,
                                                            "name": "IMarginOrder",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 11607,
                                                            "src": "16726:12:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IMarginOrder_$11607_$",
                                                                "typeString": "type(contract IMarginOrder)"
                                                            }
                                                        },
                                                        "id": 5225,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16726:23:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IMarginOrder_$11607",
                                                            "typeString": "contract IMarginOrder"
                                                        }
                                                    },
                                                    "id": 5226,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "getCurrency",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 11565,
                                                    "src": "16726:35:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                        "typeString": "function () view external returns (address)"
                                                    }
                                                },
                                                "id": 5227,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "16726:37:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5228,
                                                "name": "currencyTraded",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5179,
                                                "src": "16778:14:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 5229,
                                                "name": "cref",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5175,
                                                "src": "16807:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 5230,
                                                "name": "ref",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5173,
                                                "src": "16826:3:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            {
                                                "id": 5231,
                                                "name": "pay",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5183,
                                                "src": "16844:3:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 5232,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "16862:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 5233,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "16862:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 5186,
                                            "name": "tradeSettled",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3809,
                                            "src": "16323:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (bytes32,address,address,uint256,address,address,uint256,bytes32,bytes32,uint256,uint256)"
                                            }
                                        },
                                        "id": 5234,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16323:565:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5235,
                                    "nodeType": "EmitStatement",
                                    "src": "16318:570:16"
                                }
                            ]
                        },
                        "id": 5237,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "tradeReport",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5184,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5171,
                                    "mutability": "mutable",
                                    "name": "orderbook",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16147:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5170,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16147:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5173,
                                    "mutability": "mutable",
                                    "name": "ref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16166:11:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 5172,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16166:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5175,
                                    "mutability": "mutable",
                                    "name": "cref",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16179:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 5174,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16179:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5177,
                                    "mutability": "mutable",
                                    "name": "securityTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16193:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5176,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16193:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5179,
                                    "mutability": "mutable",
                                    "name": "currencyTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16247:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5178,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16247:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5181,
                                    "mutability": "mutable",
                                    "name": "buyer",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16271:13:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5180,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16271:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5183,
                                    "mutability": "mutable",
                                    "name": "pay",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5237,
                                    "src": "16286:11:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5182,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16286:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "16146:152:16"
                        },
                        "returnParameters": {
                            "id": 5185,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "16307:0:16"
                        },
                        "scope": 6363,
                        "src": "16126:770:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 5278,
                            "nodeType": "Block",
                            "src": "17014:361:16",
                            "statements": [
                                {
                                    "assignments": [
                                        5249
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 5249,
                                            "mutability": "mutable",
                                            "name": "fee",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5278,
                                            "src": "17025:11:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 5248,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17025:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 5255,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 5251,
                                                        "name": "pool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5239,
                                                        "src": "17058:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 5250,
                                                    "name": "IMarginTradingPool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 11651,
                                                    "src": "17039:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IMarginTradingPool_$11651_$",
                                                        "typeString": "type(contract IMarginTradingPool)"
                                                    }
                                                },
                                                "id": 5252,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "17039:24:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IMarginTradingPool_$11651",
                                                    "typeString": "contract IMarginTradingPool"
                                                }
                                            },
                                            "id": 5253,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "getFee",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 11650,
                                            "src": "17039:31:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                "typeString": "function () view external returns (uint256)"
                                            }
                                        },
                                        "id": 5254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17039:33:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "17025:47:16"
                                },
                                {
                                    "expression": {
                                        "id": 5262,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 5256,
                                            "name": "fee",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5249,
                                            "src": "17083:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "id": 5259,
                                                    "name": "currencyTraded",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5243,
                                                    "src": "17108:14:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 5260,
                                                    "name": "fee",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5249,
                                                    "src": "17124:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 5257,
                                                    "name": "FixedPoint",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 780,
                                                    "src": "17089:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_FixedPoint_$780_$",
                                                        "typeString": "type(library FixedPoint)"
                                                    }
                                                },
                                                "id": 5258,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mulDown",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 537,
                                                "src": "17089:18:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 5261,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17089:39:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "17083:45:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 5263,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17083:45:16"
                                },
                                {
                                    "expression": {
                                        "id": 5274,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 5264,
                                                "name": "fees",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3747,
                                                "src": "17300:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 5266,
                                            "indexExpression": {
                                                "id": 5265,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5241,
                                                "src": "17305:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "17300:14:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "baseExpression": {
                                                        "id": 5269,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3747,
                                                        "src": "17326:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 5271,
                                                    "indexExpression": {
                                                        "id": 5270,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5241,
                                                        "src": "17331:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "17326:14:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 5272,
                                                    "name": "fee",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5249,
                                                    "src": "17342:3:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 5267,
                                                    "name": "Math",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2367,
                                                    "src": "17317:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                        "typeString": "type(library Math)"
                                                    }
                                                },
                                                "id": 5268,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "add",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2109,
                                                "src": "17317:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 5273,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17317:29:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "17300:46:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 5275,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17300:46:16"
                                },
                                {
                                    "expression": {
                                        "id": 5276,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5249,
                                        "src": "17364:3:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 5247,
                                    "id": 5277,
                                    "nodeType": "Return",
                                    "src": "17357:10:16"
                                }
                            ]
                        },
                        "id": 5279,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "calculateFee",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5244,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5239,
                                    "mutability": "mutable",
                                    "name": "pool",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5279,
                                    "src": "16934:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5238,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16934:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5241,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5279,
                                    "src": "16948:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5240,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16948:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5243,
                                    "mutability": "mutable",
                                    "name": "currencyTraded",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5279,
                                    "src": "16966:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5242,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "16966:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "16933:56:16"
                        },
                        "returnParameters": {
                            "id": 5247,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5246,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5279,
                                    "src": "17006:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5245,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17006:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "17005:9:16"
                        },
                        "scope": 6363,
                        "src": "16912:463:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            11482
                        ],
                        "body": {
                            "id": 5381,
                            "nodeType": "Block",
                            "src": "17662:1168:16",
                            "statements": [
                                {
                                    "body": {
                                        "id": 5379,
                                        "nodeType": "Block",
                                        "src": "17734:608:16",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5324
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5324,
                                                        "mutability": "mutable",
                                                        "name": "position",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5379,
                                                        "src": "17749:44:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition"
                                                        },
                                                        "typeName": {
                                                            "id": 5323,
                                                            "name": "IMarginManager.tradePosition",
                                                            "nodeType": "UserDefinedTypeName",
                                                            "referencedDeclaration": 11372,
                                                            "src": "17749:28:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5332,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5325,
                                                                "name": "positions",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3775,
                                                                "src": "17796:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                    "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                }
                                                            },
                                                            "id": 5327,
                                                            "indexExpression": {
                                                                "id": 5326,
                                                                "name": "security",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5281,
                                                                "src": "17806:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "17796:19:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                            }
                                                        },
                                                        "id": 5329,
                                                        "indexExpression": {
                                                            "id": 5328,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5283,
                                                            "src": "17816:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "17796:29:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                        }
                                                    },
                                                    "id": 5331,
                                                    "indexExpression": {
                                                        "id": 5330,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5307,
                                                        "src": "17826:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "17796:32:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                        "typeString": "struct IMarginManager.tradePosition storage ref"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17749:79:16"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5340,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5333,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "17846:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5336,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 5334,
                                                                    "name": "position",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5324,
                                                                    "src": "17864:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                    }
                                                                },
                                                                "id": 5335,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "buyer",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11359,
                                                                "src": "17864:14:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "17846:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5338,
                                                        "indexExpression": {
                                                            "id": 5337,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5283,
                                                            "src": "17880:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "17846:43:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5339,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "17890:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "17846:45:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5355,
                                                "nodeType": "IfStatement",
                                                "src": "17843:243:16",
                                                "trueBody": {
                                                    "id": 5354,
                                                    "nodeType": "Block",
                                                    "src": "17892:194:16",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5342,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5324,
                                                                            "src": "17934:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5343,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "buyer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11359,
                                                                        "src": "17934:14:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5344,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5281,
                                                                        "src": "17950:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5345,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5283,
                                                                        "src": "17960:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5346,
                                                                        "name": "financingOfferPerSec",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5287,
                                                                        "src": "17970:20:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5347,
                                                                        "name": "dividendOfferPerSec",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5291,
                                                                        "src": "17992:19:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5348,
                                                                        "name": "swapLong",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5293,
                                                                        "src": "18013:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5349,
                                                                        "name": "settlementTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5297,
                                                                        "src": "18023:14:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 5350,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5324,
                                                                            "src": "18039:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5351,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11371,
                                                                        "src": "18039:18:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5341,
                                                                    "name": "buyerCollateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5614,
                                                                    "src": "17911:22:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (address,address,address,int256,int256,int256,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 5352,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "17911:147:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5353,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "17911:147:16"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5363,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5356,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "18103:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5359,
                                                            "indexExpression": {
                                                                "expression": {
                                                                    "id": 5357,
                                                                    "name": "position",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5324,
                                                                    "src": "18121:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                    }
                                                                },
                                                                "id": 5358,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "seller",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11361,
                                                                "src": "18121:15:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "18103:34:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5361,
                                                        "indexExpression": {
                                                            "id": 5360,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5283,
                                                            "src": "18138:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "18103:44:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5362,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "18148:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "18103:46:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5378,
                                                "nodeType": "IfStatement",
                                                "src": "18100:231:16",
                                                "trueBody": {
                                                    "id": 5377,
                                                    "nodeType": "Block",
                                                    "src": "18150:181:16",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5365,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5324,
                                                                            "src": "18193:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5366,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "seller",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11361,
                                                                        "src": "18193:15:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5367,
                                                                        "name": "security",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5281,
                                                                        "src": "18210:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5368,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5283,
                                                                        "src": "18220:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5369,
                                                                        "name": "financingBidPerSec",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5285,
                                                                        "src": "18230:18:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5370,
                                                                        "name": "dividendBidPerSec",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5289,
                                                                        "src": "18250:17:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5371,
                                                                        "name": "swapShort",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5295,
                                                                        "src": "18269:9:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5372,
                                                                        "name": "settlementTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5297,
                                                                        "src": "18280:14:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 5373,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5324,
                                                                            "src": "18296:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 5374,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "timestamp",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11371,
                                                                        "src": "18296:18:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5364,
                                                                    "name": "sellerCollateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5846,
                                                                    "src": "18169:23:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_int256_$_t_uint256_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (address,address,address,int256,int256,int256,uint256,uint256)"
                                                                    }
                                                                },
                                                                "id": 5375,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "18169:146:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5376,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "18169:146:16"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 5317,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5310,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5307,
                                            "src": "17690:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5311,
                                                        "name": "positions",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3775,
                                                        "src": "17692:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                        }
                                                    },
                                                    "id": 5313,
                                                    "indexExpression": {
                                                        "id": 5312,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5281,
                                                        "src": "17702:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "17692:19:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                        "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                    }
                                                },
                                                "id": 5315,
                                                "indexExpression": {
                                                    "id": 5314,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5283,
                                                    "src": "17712:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "17692:29:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                    "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                }
                                            },
                                            "id": 5316,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "17692:36:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "17690:38:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 5380,
                                    "initializationExpression": {
                                        "assignments": [
                                            5307
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 5307,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5380,
                                                "src": "17677:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5306,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17677:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 5309,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 5308,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "17687:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "17677:11:16"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 5319,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "17730:3:16",
                                            "subExpression": {
                                                "id": 5318,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5307,
                                                "src": "17730:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 5320,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17730:3:16"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "17673:669:16"
                                }
                            ]
                        },
                        "functionSelector": "20f55dfe",
                        "id": 5382,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 5301,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "17641:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 5302,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "17641:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    {
                                        "id": 5303,
                                        "name": "security",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5281,
                                        "src": "17653:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                ],
                                "id": 5304,
                                "modifierName": {
                                    "id": 5300,
                                    "name": "onlyIssueManager",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3893,
                                    "src": "17624:16:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$_t_address_$",
                                        "typeString": "modifier (address,address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "17624:38:16"
                            }
                        ],
                        "name": "onSettle",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 5299,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "17606:8:16"
                        },
                        "parameters": {
                            "id": 5298,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5281,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17401:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5280,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17401:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5283,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17419:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5282,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17419:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5285,
                                    "mutability": "mutable",
                                    "name": "financingBidPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17437:25:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5284,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17437:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5287,
                                    "mutability": "mutable",
                                    "name": "financingOfferPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17464:27:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5286,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17464:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5289,
                                    "mutability": "mutable",
                                    "name": "dividendBidPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17493:24:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5288,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17493:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5291,
                                    "mutability": "mutable",
                                    "name": "dividendOfferPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17519:26:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5290,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17519:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5293,
                                    "mutability": "mutable",
                                    "name": "swapLong",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17547:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5292,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17547:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5295,
                                    "mutability": "mutable",
                                    "name": "swapShort",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17564:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5294,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17564:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5297,
                                    "mutability": "mutable",
                                    "name": "settlementTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5382,
                                    "src": "17582:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5296,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17582:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "17400:205:16"
                        },
                        "returnParameters": {
                            "id": 5305,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "17662:0:16"
                        },
                        "scope": 6363,
                        "src": "17383:1447:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 5613,
                            "nodeType": "Block",
                            "src": "19049:1452:16",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5403,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5401,
                                            "name": "financingOfferPerSec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5390,
                                            "src": "19063:20:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5402,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19086:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "19063:24:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5431,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5429,
                                                "name": "financingOfferPerSec",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5390,
                                                "src": "19265:20:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5430,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "19288:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "19265:24:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5457,
                                        "nodeType": "IfStatement",
                                        "src": "19262:186:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5455,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5432,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "19304:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5435,
                                                        "indexExpression": {
                                                            "id": 5433,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5384,
                                                            "src": "19322:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "19304:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5436,
                                                    "indexExpression": {
                                                        "id": 5434,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5388,
                                                        "src": "19328:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "19304:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5439,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "19349:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5441,
                                                                "indexExpression": {
                                                                    "id": 5440,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5384,
                                                                    "src": "19367:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "19349:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5443,
                                                            "indexExpression": {
                                                                "id": 5442,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5388,
                                                                "src": "19373:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "19349:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5453,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5444,
                                                                "name": "financingOfferPerSec",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5390,
                                                                "src": "19384:20:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5449,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5396,
                                                                                "src": "19420:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5450,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5398,
                                                                                "src": "19436:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5447,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "19411:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5448,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "19411:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5451,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "19411:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5446,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "19407:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5445,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "19407:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5452,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "19407:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "19384:63:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5437,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "19340:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5438,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "add",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2150,
                                                        "src": "19340:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5454,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19340:108:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "19304:144:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5456,
                                            "nodeType": "ExpressionStatement",
                                            "src": "19304:144:16"
                                        }
                                    },
                                    "id": 5458,
                                    "nodeType": "IfStatement",
                                    "src": "19060:388:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5427,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5404,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "19102:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5407,
                                                    "indexExpression": {
                                                        "id": 5405,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5384,
                                                        "src": "19120:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "19102:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5408,
                                                "indexExpression": {
                                                    "id": 5406,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5388,
                                                    "src": "19126:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "19102:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5411,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "19147:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5413,
                                                            "indexExpression": {
                                                                "id": 5412,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5384,
                                                                "src": "19165:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "19147:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5415,
                                                        "indexExpression": {
                                                            "id": 5414,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5388,
                                                            "src": "19171:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "19147:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5425,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5416,
                                                            "name": "financingOfferPerSec",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5390,
                                                            "src": "19182:20:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5421,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5396,
                                                                            "src": "19218:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5422,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5398,
                                                                            "src": "19234:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5419,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "19209:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5420,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "19209:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5423,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "19209:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5418,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "19205:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5417,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "19205:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5424,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19205:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "19182:63:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5409,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "19138:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5410,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2218,
                                                    "src": "19138:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5426,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "19138:108:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "19102:144:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5428,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19102:144:16"
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5461,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5459,
                                            "name": "dividendOfferPerSec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5392,
                                            "src": "19462:19:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5460,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19484:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "19462:23:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5489,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5487,
                                                "name": "dividendOfferPerSec",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5392,
                                                "src": "19662:19:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5488,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "19684:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "19662:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5515,
                                        "nodeType": "IfStatement",
                                        "src": "19659:184:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5513,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5490,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "19700:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5493,
                                                        "indexExpression": {
                                                            "id": 5491,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5384,
                                                            "src": "19718:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "19700:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5494,
                                                    "indexExpression": {
                                                        "id": 5492,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5388,
                                                        "src": "19724:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "19700:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5497,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "19745:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5499,
                                                                "indexExpression": {
                                                                    "id": 5498,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5384,
                                                                    "src": "19763:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "19745:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5501,
                                                            "indexExpression": {
                                                                "id": 5500,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5388,
                                                                "src": "19769:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "19745:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5511,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5502,
                                                                "name": "dividendOfferPerSec",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5392,
                                                                "src": "19780:19:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5507,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5396,
                                                                                "src": "19815:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5508,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5398,
                                                                                "src": "19831:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5505,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "19806:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5506,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "19806:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5509,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "19806:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5504,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "19802:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5503,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "19802:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5510,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "19802:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "19780:62:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5495,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "19736:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5496,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "add",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2150,
                                                        "src": "19736:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5512,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19736:107:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "19700:143:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5514,
                                            "nodeType": "ExpressionStatement",
                                            "src": "19700:143:16"
                                        }
                                    },
                                    "id": 5516,
                                    "nodeType": "IfStatement",
                                    "src": "19459:384:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5485,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5462,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "19500:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5465,
                                                    "indexExpression": {
                                                        "id": 5463,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5384,
                                                        "src": "19518:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "19500:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5466,
                                                "indexExpression": {
                                                    "id": 5464,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5388,
                                                    "src": "19524:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "19500:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5469,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "19545:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5471,
                                                            "indexExpression": {
                                                                "id": 5470,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5384,
                                                                "src": "19563:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "19545:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5473,
                                                        "indexExpression": {
                                                            "id": 5472,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5388,
                                                            "src": "19569:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "19545:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5483,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5474,
                                                            "name": "dividendOfferPerSec",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5392,
                                                            "src": "19580:19:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5479,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5396,
                                                                            "src": "19615:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5480,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5398,
                                                                            "src": "19631:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5477,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "19606:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5478,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "19606:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5481,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "19606:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5476,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "19602:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5475,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "19602:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5482,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19602:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "19580:62:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5467,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "19536:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5468,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2218,
                                                    "src": "19536:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5484,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "19536:107:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "19500:143:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5486,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19500:143:16"
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5519,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5517,
                                            "name": "swapLong",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5394,
                                            "src": "19857:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5518,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19868:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "19857:12:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5547,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5545,
                                                "name": "swapLong",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5394,
                                                "src": "20035:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5546,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "20046:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "20035:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5573,
                                        "nodeType": "IfStatement",
                                        "src": "20032:162:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5571,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5548,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "20062:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5551,
                                                        "indexExpression": {
                                                            "id": 5549,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5384,
                                                            "src": "20080:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "20062:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5552,
                                                    "indexExpression": {
                                                        "id": 5550,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5388,
                                                        "src": "20086:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "20062:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5555,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "20107:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5557,
                                                                "indexExpression": {
                                                                    "id": 5556,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5384,
                                                                    "src": "20125:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "20107:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5559,
                                                            "indexExpression": {
                                                                "id": 5558,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5388,
                                                                "src": "20131:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "20107:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5569,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5560,
                                                                "name": "swapLong",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5394,
                                                                "src": "20142:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5565,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5396,
                                                                                "src": "20166:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5566,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5398,
                                                                                "src": "20182:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5563,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "20157:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5564,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "20157:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5567,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "20157:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5562,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "20153:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5561,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "20153:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5568,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "20153:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "20142:51:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5553,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "20098:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5554,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "add",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2150,
                                                        "src": "20098:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5570,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20098:96:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "20062:132:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5572,
                                            "nodeType": "ExpressionStatement",
                                            "src": "20062:132:16"
                                        }
                                    },
                                    "id": 5574,
                                    "nodeType": "IfStatement",
                                    "src": "19854:340:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5543,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5520,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "19884:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5523,
                                                    "indexExpression": {
                                                        "id": 5521,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5384,
                                                        "src": "19902:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "19884:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5524,
                                                "indexExpression": {
                                                    "id": 5522,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5388,
                                                    "src": "19908:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "19884:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5527,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "19929:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5529,
                                                            "indexExpression": {
                                                                "id": 5528,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5384,
                                                                "src": "19947:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "19929:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5531,
                                                        "indexExpression": {
                                                            "id": 5530,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5388,
                                                            "src": "19953:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "19929:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5541,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5532,
                                                            "name": "swapLong",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5394,
                                                            "src": "19964:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5537,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5396,
                                                                            "src": "19988:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5538,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5398,
                                                                            "src": "20004:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5535,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "19979:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5536,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "19979:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5539,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "19979:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5534,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "19975:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5533,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "19975:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5540,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19975:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "19964:51:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5525,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "19920:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5526,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2218,
                                                    "src": "19920:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5542,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "19920:96:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "19884:132:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5544,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19884:132:16"
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 5576,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5384,
                                                "src": "20269:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5577,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5386,
                                                "src": "20275:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5578,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5388,
                                                "src": "20285:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5588,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5579,
                                                    "name": "financingOfferPerSec",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5390,
                                                    "src": "20295:20:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5584,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5396,
                                                                    "src": "20331:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5585,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5398,
                                                                    "src": "20347:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5582,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "20322:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5583,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "20322:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5586,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20322:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5581,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "20318:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5580,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "20318:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5587,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20318:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "20295:63:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5598,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5589,
                                                    "name": "dividendOfferPerSec",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5392,
                                                    "src": "20360:19:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5594,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5396,
                                                                    "src": "20395:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5595,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5398,
                                                                    "src": "20411:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5592,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "20386:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5593,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "20386:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5596,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20386:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5591,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "20382:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5590,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "20382:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5597,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20382:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "20360:62:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5608,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5599,
                                                    "name": "swapLong",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5394,
                                                    "src": "20424:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5604,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5396,
                                                                    "src": "20448:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5605,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5398,
                                                                    "src": "20464:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5602,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "20439:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5603,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "20439:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5606,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20439:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5601,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "20435:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5600,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "20435:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5607,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20435:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "20424:51:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 5609,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "20477:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 5610,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "20477:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 5575,
                                            "name": "PnLSettled",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3871,
                                            "src": "20258:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_int256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,int256,int256,int256,uint256)"
                                            }
                                        },
                                        "id": 5611,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "20258:235:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5612,
                                    "nodeType": "EmitStatement",
                                    "src": "20253:240:16"
                                }
                            ]
                        },
                        "id": 5614,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "buyerCollateralBalance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5399,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5384,
                                    "mutability": "mutable",
                                    "name": "user",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18874:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5383,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18874:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5386,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18888:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5385,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18888:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5388,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18906:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5387,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18906:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5390,
                                    "mutability": "mutable",
                                    "name": "financingOfferPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18924:27:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5389,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18924:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5392,
                                    "mutability": "mutable",
                                    "name": "dividendOfferPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18953:26:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5391,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18953:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5394,
                                    "mutability": "mutable",
                                    "name": "swapLong",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18981:15:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5393,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18981:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5396,
                                    "mutability": "mutable",
                                    "name": "settlementTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "18998:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5395,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "18998:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5398,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5614,
                                    "src": "19022:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5397,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19022:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "18873:167:16"
                        },
                        "returnParameters": {
                            "id": 5400,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "19049:0:16"
                        },
                        "scope": 6363,
                        "src": "18842:1659:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "body": {
                            "id": 5845,
                            "nodeType": "Block",
                            "src": "20714:1437:16",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5635,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5633,
                                            "name": "financingBidPerSec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5622,
                                            "src": "20728:18:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5634,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "20749:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "20728:22:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5663,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5661,
                                                "name": "financingBidPerSec",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5622,
                                                "src": "20926:18:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5662,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "20947:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "20926:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5689,
                                        "nodeType": "IfStatement",
                                        "src": "20923:182:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5687,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5664,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "20963:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5667,
                                                        "indexExpression": {
                                                            "id": 5665,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5616,
                                                            "src": "20981:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "20963:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5668,
                                                    "indexExpression": {
                                                        "id": 5666,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5620,
                                                        "src": "20987:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "20963:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5671,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "21008:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5673,
                                                                "indexExpression": {
                                                                    "id": 5672,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5616,
                                                                    "src": "21026:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "21008:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5675,
                                                            "indexExpression": {
                                                                "id": 5674,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5620,
                                                                "src": "21032:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "21008:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5685,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5676,
                                                                "name": "financingBidPerSec",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5622,
                                                                "src": "21043:18:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5681,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5628,
                                                                                "src": "21077:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5682,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5630,
                                                                                "src": "21093:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5679,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "21068:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5680,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "21068:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5683,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "21068:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5678,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "21064:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5677,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "21064:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5684,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "21064:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "21043:61:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5669,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "20999:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5670,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sub",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2218,
                                                        "src": "20999:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5686,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20999:106:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "20963:142:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5688,
                                            "nodeType": "ExpressionStatement",
                                            "src": "20963:142:16"
                                        }
                                    },
                                    "id": 5690,
                                    "nodeType": "IfStatement",
                                    "src": "20725:380:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5659,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5636,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "20765:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5639,
                                                    "indexExpression": {
                                                        "id": 5637,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5616,
                                                        "src": "20783:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "20765:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5640,
                                                "indexExpression": {
                                                    "id": 5638,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5620,
                                                    "src": "20789:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "20765:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5643,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "20810:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5645,
                                                            "indexExpression": {
                                                                "id": 5644,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5616,
                                                                "src": "20828:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "20810:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5647,
                                                        "indexExpression": {
                                                            "id": 5646,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5620,
                                                            "src": "20834:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "20810:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5657,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5648,
                                                            "name": "financingBidPerSec",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5622,
                                                            "src": "20845:18:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5653,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5628,
                                                                            "src": "20879:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5654,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5630,
                                                                            "src": "20895:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5651,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "20870:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5652,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "20870:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5655,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "20870:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5650,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "20866:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5649,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "20866:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5656,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20866:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "20845:61:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5641,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "20801:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5642,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "add",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2150,
                                                    "src": "20801:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5658,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "20801:106:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "20765:142:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5660,
                                        "nodeType": "ExpressionStatement",
                                        "src": "20765:142:16"
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5693,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5691,
                                            "name": "dividendBidPerSec",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5624,
                                            "src": "21119:17:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5692,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21139:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "21119:21:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5721,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5719,
                                                "name": "dividendBidPerSec",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5624,
                                                "src": "21315:17:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5720,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21335:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "21315:21:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5747,
                                        "nodeType": "IfStatement",
                                        "src": "21312:180:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5745,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5722,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "21351:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5725,
                                                        "indexExpression": {
                                                            "id": 5723,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5616,
                                                            "src": "21369:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "21351:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5726,
                                                    "indexExpression": {
                                                        "id": 5724,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5620,
                                                        "src": "21375:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "21351:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5729,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "21396:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5731,
                                                                "indexExpression": {
                                                                    "id": 5730,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5616,
                                                                    "src": "21414:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "21396:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5733,
                                                            "indexExpression": {
                                                                "id": 5732,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5620,
                                                                "src": "21420:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "21396:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5743,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5734,
                                                                "name": "dividendBidPerSec",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5624,
                                                                "src": "21431:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5739,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5628,
                                                                                "src": "21464:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5740,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5630,
                                                                                "src": "21480:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5737,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "21455:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5738,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "21455:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5741,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "21455:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5736,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "21451:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5735,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "21451:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5742,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "21451:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "21431:60:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5727,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "21387:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5728,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sub",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2218,
                                                        "src": "21387:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5744,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21387:105:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "21351:141:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5746,
                                            "nodeType": "ExpressionStatement",
                                            "src": "21351:141:16"
                                        }
                                    },
                                    "id": 5748,
                                    "nodeType": "IfStatement",
                                    "src": "21116:376:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5717,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5694,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "21155:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5697,
                                                    "indexExpression": {
                                                        "id": 5695,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5616,
                                                        "src": "21173:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "21155:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5698,
                                                "indexExpression": {
                                                    "id": 5696,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5620,
                                                    "src": "21179:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "21155:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5701,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "21200:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5703,
                                                            "indexExpression": {
                                                                "id": 5702,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5616,
                                                                "src": "21218:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "21200:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5705,
                                                        "indexExpression": {
                                                            "id": 5704,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5620,
                                                            "src": "21224:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "21200:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5715,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5706,
                                                            "name": "dividendBidPerSec",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5624,
                                                            "src": "21235:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5711,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5628,
                                                                            "src": "21268:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5712,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5630,
                                                                            "src": "21284:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5709,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "21259:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5710,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "21259:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5713,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "21259:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5708,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "21255:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5707,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "21255:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5714,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21255:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "21235:60:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5699,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "21191:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5700,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "add",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2150,
                                                    "src": "21191:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5716,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "21191:105:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "21155:141:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5718,
                                        "nodeType": "ExpressionStatement",
                                        "src": "21155:141:16"
                                    }
                                },
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        },
                                        "id": 5751,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5749,
                                            "name": "swapShort",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5626,
                                            "src": "21506:9:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": ">",
                                        "rightExpression": {
                                            "hexValue": "30",
                                            "id": 5750,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "21518:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "21506:13:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "falseBody": {
                                        "condition": {
                                            "commonType": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "id": 5779,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "id": 5777,
                                                "name": "swapShort",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5626,
                                                "src": "21686:9:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<",
                                            "rightExpression": {
                                                "hexValue": "30",
                                                "id": 5778,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "21698:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                            },
                                            "src": "21686:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "id": 5805,
                                        "nodeType": "IfStatement",
                                        "src": "21683:164:16",
                                        "trueBody": {
                                            "expression": {
                                                "id": 5803,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 5780,
                                                            "name": "collateralBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3755,
                                                            "src": "21714:17:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                            }
                                                        },
                                                        "id": 5783,
                                                        "indexExpression": {
                                                            "id": 5781,
                                                            "name": "user",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5616,
                                                            "src": "21732:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "21714:23:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                            "typeString": "mapping(address => int256)"
                                                        }
                                                    },
                                                    "id": 5784,
                                                    "indexExpression": {
                                                        "id": 5782,
                                                        "name": "currency",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5620,
                                                        "src": "21738:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": true,
                                                    "nodeType": "IndexAccess",
                                                    "src": "21714:33:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                    "arguments": [
                                                        {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5787,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "21759:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5789,
                                                                "indexExpression": {
                                                                    "id": 5788,
                                                                    "name": "user",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5616,
                                                                    "src": "21777:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "21759:23:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5791,
                                                            "indexExpression": {
                                                                "id": 5790,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5620,
                                                                "src": "21783:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "21759:33:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 5801,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5792,
                                                                "name": "swapShort",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5626,
                                                                "src": "21794:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5797,
                                                                                "name": "settlementTime",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5628,
                                                                                "src": "21819:14:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5798,
                                                                                "name": "timestamp",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5630,
                                                                                "src": "21835:9:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5795,
                                                                                "name": "Math",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2367,
                                                                                "src": "21810:4:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                    "typeString": "type(library Math)"
                                                                                }
                                                                            },
                                                                            "id": 5796,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "sub",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2177,
                                                                            "src": "21810:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5799,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "21810:35:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5794,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "21806:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                        "typeString": "type(int256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5793,
                                                                        "name": "int",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "21806:3:16",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5800,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "21806:40:16",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "21794:52:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5785,
                                                            "name": "Math",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2367,
                                                            "src": "21750:4:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                "typeString": "type(library Math)"
                                                            }
                                                        },
                                                        "id": 5786,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sub",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2218,
                                                        "src": "21750:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 5802,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21750:97:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "21714:133:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "id": 5804,
                                            "nodeType": "ExpressionStatement",
                                            "src": "21714:133:16"
                                        }
                                    },
                                    "id": 5806,
                                    "nodeType": "IfStatement",
                                    "src": "21503:344:16",
                                    "trueBody": {
                                        "expression": {
                                            "id": 5775,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5752,
                                                        "name": "collateralBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3755,
                                                        "src": "21534:17:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                        }
                                                    },
                                                    "id": 5755,
                                                    "indexExpression": {
                                                        "id": 5753,
                                                        "name": "user",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5616,
                                                        "src": "21552:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "21534:23:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                        "typeString": "mapping(address => int256)"
                                                    }
                                                },
                                                "id": 5756,
                                                "indexExpression": {
                                                    "id": 5754,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5620,
                                                    "src": "21558:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": true,
                                                "nodeType": "IndexAccess",
                                                "src": "21534:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                                "arguments": [
                                                    {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5759,
                                                                "name": "collateralBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3755,
                                                                "src": "21579:17:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                }
                                                            },
                                                            "id": 5761,
                                                            "indexExpression": {
                                                                "id": 5760,
                                                                "name": "user",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5616,
                                                                "src": "21597:4:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "21579:23:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                "typeString": "mapping(address => int256)"
                                                            }
                                                        },
                                                        "id": 5763,
                                                        "indexExpression": {
                                                            "id": 5762,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5620,
                                                            "src": "21603:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "21579:33:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5773,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5764,
                                                            "name": "swapShort",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5626,
                                                            "src": "21614:9:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "*",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5769,
                                                                            "name": "settlementTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5628,
                                                                            "src": "21639:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 5770,
                                                                            "name": "timestamp",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5630,
                                                                            "src": "21655:9:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "id": 5767,
                                                                            "name": "Math",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2367,
                                                                            "src": "21630:4:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                "typeString": "type(library Math)"
                                                                            }
                                                                        },
                                                                        "id": 5768,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sub",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2177,
                                                                        "src": "21630:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5771,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "21630:35:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5766,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "21626:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5765,
                                                                    "name": "int",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "21626:3:16",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5772,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21626:40:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "21614:52:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "id": 5757,
                                                        "name": "Math",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2367,
                                                        "src": "21570:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                            "typeString": "type(library Math)"
                                                        }
                                                    },
                                                    "id": 5758,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "add",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 2150,
                                                    "src": "21570:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                    }
                                                },
                                                "id": 5774,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "21570:97:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "src": "21534:133:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            }
                                        },
                                        "id": 5776,
                                        "nodeType": "ExpressionStatement",
                                        "src": "21534:133:16"
                                    }
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "id": 5808,
                                                "name": "user",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5616,
                                                "src": "21922:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5809,
                                                "name": "security",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5618,
                                                "src": "21928:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 5810,
                                                "name": "currency",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5620,
                                                "src": "21938:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5820,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5811,
                                                    "name": "financingBidPerSec",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5622,
                                                    "src": "21948:18:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5816,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5628,
                                                                    "src": "21982:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5817,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5630,
                                                                    "src": "21998:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5814,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "21973:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5815,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "21973:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5818,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21973:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5813,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "21969:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5812,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21969:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5819,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21969:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "21948:61:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5830,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5821,
                                                    "name": "dividendBidPerSec",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5624,
                                                    "src": "22011:17:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5826,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5628,
                                                                    "src": "22044:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5827,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5630,
                                                                    "src": "22060:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5824,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "22035:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5825,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "22035:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5828,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "22035:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5823,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "22031:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5822,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "22031:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5829,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22031:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "22011:60:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "id": 5840,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 5831,
                                                    "name": "swapShort",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5626,
                                                    "src": "22073:9:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "*",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5836,
                                                                    "name": "settlementTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5628,
                                                                    "src": "22098:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5837,
                                                                    "name": "timestamp",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5630,
                                                                    "src": "22114:9:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5834,
                                                                    "name": "Math",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2367,
                                                                    "src": "22089:4:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                        "typeString": "type(library Math)"
                                                                    }
                                                                },
                                                                "id": 5835,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2177,
                                                                "src": "22089:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5838,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "22089:35:16",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5833,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "22085:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                            "typeString": "type(int256)"
                                                        },
                                                        "typeName": {
                                                            "id": 5832,
                                                            "name": "int",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "22085:3:16",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 5839,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22085:40:16",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "src": "22073:52:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 5841,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "22127:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 5842,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "22127:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 5807,
                                            "name": "PnLSettled",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3871,
                                            "src": "21911:10:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_int256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,address,address,int256,int256,int256,uint256)"
                                            }
                                        },
                                        "id": 5843,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "21911:232:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 5844,
                                    "nodeType": "EmitStatement",
                                    "src": "21906:237:16"
                                }
                            ]
                        },
                        "id": 5846,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "sellerCollateralBalance",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 5631,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5616,
                                    "mutability": "mutable",
                                    "name": "user",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20542:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5615,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20542:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5618,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20556:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5617,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20556:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5620,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20574:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5619,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20574:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5622,
                                    "mutability": "mutable",
                                    "name": "financingBidPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20592:25:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5621,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20592:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5624,
                                    "mutability": "mutable",
                                    "name": "dividendBidPerSec",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20619:24:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5623,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20619:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5626,
                                    "mutability": "mutable",
                                    "name": "swapShort",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20645:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 5625,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20645:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5628,
                                    "mutability": "mutable",
                                    "name": "settlementTime",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20663:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5627,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20663:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5630,
                                    "mutability": "mutable",
                                    "name": "timestamp",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5846,
                                    "src": "20687:17:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5629,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "20687:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "20541:164:16"
                        },
                        "returnParameters": {
                            "id": 5632,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "20714:0:16"
                        },
                        "scope": 6363,
                        "src": "20509:1642:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "private"
                    },
                    {
                        "baseFunctions": [
                            11491
                        ],
                        "body": {
                            "id": 6243,
                            "nodeType": "Block",
                            "src": "22269:3108:16",
                            "statements": [
                                {
                                    "assignments": [
                                        5861
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 5861,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6243,
                                            "src": "22280:14:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            },
                                            "typeName": {
                                                "id": 5860,
                                                "name": "bytes32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "22280:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 5865,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 5862,
                                            "name": "poolSecurity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3739,
                                            "src": "22297:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_bytes32_$",
                                                "typeString": "mapping(address => bytes32)"
                                            }
                                        },
                                        "id": 5864,
                                        "indexExpression": {
                                            "id": 5863,
                                            "name": "security",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5848,
                                            "src": "22310:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22297:22:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "22280:39:16"
                                },
                                {
                                    "body": {
                                        "id": 6241,
                                        "nodeType": "Block",
                                        "src": "22391:2979:16",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5884
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5884,
                                                        "mutability": "mutable",
                                                        "name": "position",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 6241,
                                                        "src": "22406:44:16",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                            "typeString": "struct IMarginManager.tradePosition"
                                                        },
                                                        "typeName": {
                                                            "id": 5883,
                                                            "name": "IMarginManager.tradePosition",
                                                            "nodeType": "UserDefinedTypeName",
                                                            "referencedDeclaration": 11372,
                                                            "src": "22406:28:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_storage_ptr",
                                                                "typeString": "struct IMarginManager.tradePosition"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5892,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 5885,
                                                                "name": "positions",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3775,
                                                                "src": "22453:9:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                                    "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                                }
                                                            },
                                                            "id": 5887,
                                                            "indexExpression": {
                                                                "id": 5886,
                                                                "name": "security",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5848,
                                                                "src": "22463:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "22453:19:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                                "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                            }
                                                        },
                                                        "id": 5889,
                                                        "indexExpression": {
                                                            "id": 5888,
                                                            "name": "currency",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5850,
                                                            "src": "22473:8:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "22453:29:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                            "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                        }
                                                    },
                                                    "id": 5891,
                                                    "indexExpression": {
                                                        "id": 5890,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5867,
                                                        "src": "22483:1:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "22453:32:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_storage",
                                                        "typeString": "struct IMarginManager.tradePosition storage ref"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "22406:79:16"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 5906,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 5897,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 5893,
                                                                "name": "position",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5884,
                                                                "src": "22503:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                }
                                                            },
                                                            "id": 5894,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "buyer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 11359,
                                                            "src": "22503:14:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 5895,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "22519:3:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 5896,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "22519:10:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address_payable",
                                                                "typeString": "address payable"
                                                            }
                                                        },
                                                        "src": "22503:26:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5905,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "baseExpression": {
                                                                "baseExpression": {
                                                                    "id": 5898,
                                                                    "name": "collateralBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3755,
                                                                    "src": "22533:17:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                    }
                                                                },
                                                                "id": 5901,
                                                                "indexExpression": {
                                                                    "expression": {
                                                                        "id": 5899,
                                                                        "name": "position",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5884,
                                                                        "src": "22551:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                        }
                                                                    },
                                                                    "id": 5900,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "buyer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 11359,
                                                                    "src": "22551:14:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "22533:33:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                    "typeString": "mapping(address => int256)"
                                                                }
                                                            },
                                                            "id": 5903,
                                                            "indexExpression": {
                                                                "id": 5902,
                                                                "name": "currency",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5850,
                                                                "src": "22567:8:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "22533:43:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 5904,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "22577:1:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "22533:45:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "22503:75:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "id": 6079,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 6070,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 6066,
                                                                    "name": "position",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5884,
                                                                    "src": "23943:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                    }
                                                                },
                                                                "id": 6067,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "seller",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 11361,
                                                                "src": "23943:15:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 6068,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "23960:3:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 6069,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "23960:10:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            "src": "23943:27:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&&",
                                                        "rightExpression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 6078,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 6071,
                                                                        "name": "collateralBalance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3755,
                                                                        "src": "23974:17:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                        }
                                                                    },
                                                                    "id": 6074,
                                                                    "indexExpression": {
                                                                        "expression": {
                                                                            "id": 6072,
                                                                            "name": "position",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5884,
                                                                            "src": "23992:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                            }
                                                                        },
                                                                        "id": 6073,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "seller",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 11361,
                                                                        "src": "23992:15:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "23974:34:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                        "typeString": "mapping(address => int256)"
                                                                    }
                                                                },
                                                                "id": 6076,
                                                                "indexExpression": {
                                                                    "id": 6075,
                                                                    "name": "currency",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5850,
                                                                    "src": "24009:8:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "23974:44:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 6077,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "24019:1:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "23974:46:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "src": "23943:77:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "id": 6239,
                                                    "nodeType": "IfStatement",
                                                    "src": "23940:1419:16",
                                                    "trueBody": {
                                                        "id": 6238,
                                                        "nodeType": "Block",
                                                        "src": "24021:1338:16",
                                                        "statements": [
                                                            {
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "id": 6090,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 6082,
                                                                                "name": "amount",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5852,
                                                                                "src": "24047:6:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "id": 6081,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "24043:3:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                                "typeString": "type(int256)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 6080,
                                                                                "name": "int",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "24043:3:16",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 6083,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "24043:11:16",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">=",
                                                                    "rightExpression": {
                                                                        "baseExpression": {
                                                                            "baseExpression": {
                                                                                "id": 6084,
                                                                                "name": "collateralBalance",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3755,
                                                                                "src": "24058:17:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                                }
                                                                            },
                                                                            "id": 6087,
                                                                            "indexExpression": {
                                                                                "expression": {
                                                                                    "id": 6085,
                                                                                    "name": "position",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5884,
                                                                                    "src": "24076:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                                    }
                                                                                },
                                                                                "id": 6086,
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "seller",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 11361,
                                                                                "src": "24076:15:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "IndexAccess",
                                                                            "src": "24058:34:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                "typeString": "mapping(address => int256)"
                                                                            }
                                                                        },
                                                                        "id": 6089,
                                                                        "indexExpression": {
                                                                            "id": 6088,
                                                                            "name": "currency",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5850,
                                                                            "src": "24093:8:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "24058:44:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "src": "24043:59:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseBody": {
                                                                    "id": 6236,
                                                                    "nodeType": "Block",
                                                                    "src": "24750:504:16",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6177,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "24799:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 6178,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "seller",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11361,
                                                                                        "src": "24799:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 6179,
                                                                                        "name": "amount",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5852,
                                                                                        "src": "24816:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 6174,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "24780:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 6173,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2938,
                                                                                            "src": "24773:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6175,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "24773:16:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 6176,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2887,
                                                                                    "src": "24773:25:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 6180,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "24773:50:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 6181,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24773:50:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6196,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 6182,
                                                                                            "name": "collateralAmount",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3761,
                                                                                            "src": "24846:16:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                            }
                                                                                        },
                                                                                        "id": 6185,
                                                                                        "indexExpression": {
                                                                                            "id": 6183,
                                                                                            "name": "poolId",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5861,
                                                                                            "src": "24863:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes32",
                                                                                                "typeString": "bytes32"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "24846:24:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                            "typeString": "mapping(address => uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6186,
                                                                                    "indexExpression": {
                                                                                        "id": 6184,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "24871:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": true,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "24846:34:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "baseExpression": {
                                                                                                "baseExpression": {
                                                                                                    "id": 6189,
                                                                                                    "name": "collateralAmount",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3761,
                                                                                                    "src": "24892:16:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                        "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6191,
                                                                                                "indexExpression": {
                                                                                                    "id": 6190,
                                                                                                    "name": "poolId",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5861,
                                                                                                    "src": "24909:6:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes32",
                                                                                                        "typeString": "bytes32"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "24892:24:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                                    "typeString": "mapping(address => uint256)"
                                                                                                }
                                                                                            },
                                                                                            "id": 6193,
                                                                                            "indexExpression": {
                                                                                                "id": 6192,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "24917:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "24892:34:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "id": 6194,
                                                                                            "name": "amount",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5852,
                                                                                            "src": "24928:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 6187,
                                                                                            "name": "Math",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "src": "24883:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                                "typeString": "type(library Math)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6188,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "sub",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 2177,
                                                                                        "src": "24883:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6195,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "24883:52:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "src": "24846:89:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 6197,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24846:89:16"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "77697468647261776c",
                                                                                        "id": 6199,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "24977:11:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                        },
                                                                                        "value": "withdrawl"
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6200,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "24990:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 6201,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "seller",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11361,
                                                                                        "src": "24990:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 6202,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "25007:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 6205,
                                                                                                "name": "amount",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5852,
                                                                                                "src": "25021:6:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 6204,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "25017:3:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                                                "typeString": "type(int256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 6203,
                                                                                                "name": "int",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "25017:3:16",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 6206,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "25017:11:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6207,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -4,
                                                                                            "src": "25030:5:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 6208,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "25030:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 6198,
                                                                                    "name": "collateral",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3855,
                                                                                    "src": "24966:10:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,int256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 6209,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "24966:80:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 6210,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "24961:85:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6230,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 6211,
                                                                                            "name": "collateralBalance",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "src": "25086:17:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                                            }
                                                                                        },
                                                                                        "id": 6215,
                                                                                        "indexExpression": {
                                                                                            "expression": {
                                                                                                "id": 6212,
                                                                                                "name": "position",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5884,
                                                                                                "src": "25104:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                }
                                                                                            },
                                                                                            "id": 6213,
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "seller",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 11361,
                                                                                            "src": "25104:15:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "25086:34:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                            "typeString": "mapping(address => int256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6216,
                                                                                    "indexExpression": {
                                                                                        "id": 6214,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "25121:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": true,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "25086:44:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "baseExpression": {
                                                                                                "baseExpression": {
                                                                                                    "id": 6219,
                                                                                                    "name": "collateralBalance",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "src": "25142:17:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6222,
                                                                                                "indexExpression": {
                                                                                                    "expression": {
                                                                                                        "id": 6220,
                                                                                                        "name": "position",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 5884,
                                                                                                        "src": "25160:8:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 6221,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "memberName": "seller",
                                                                                                    "nodeType": "MemberAccess",
                                                                                                    "referencedDeclaration": 11361,
                                                                                                    "src": "25160:15:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_address",
                                                                                                        "typeString": "address"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "25142:34:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                    "typeString": "mapping(address => int256)"
                                                                                                }
                                                                                            },
                                                                                            "id": 6224,
                                                                                            "indexExpression": {
                                                                                                "id": 6223,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "25177:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "25142:44:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "id": 6227,
                                                                                                    "name": "amount",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5852,
                                                                                                    "src": "25192:6:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6226,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                                "src": "25188:3:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                                                    "typeString": "type(int256)"
                                                                                                },
                                                                                                "typeName": {
                                                                                                    "id": 6225,
                                                                                                    "name": "int",
                                                                                                    "nodeType": "ElementaryTypeName",
                                                                                                    "src": "25188:3:16",
                                                                                                    "typeDescriptions": {}
                                                                                                }
                                                                                            },
                                                                                            "id": 6228,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "typeConversion",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "25188:11:16",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 6217,
                                                                                            "name": "Math",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "src": "25133:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                                "typeString": "type(library Math)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6218,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "sub",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 2218,
                                                                                        "src": "25133:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6229,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "25133:67:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    }
                                                                                },
                                                                                "src": "25086:114:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 6231,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "25086:114:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6234,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "id": 6232,
                                                                                    "name": "amount",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5852,
                                                                                    "src": "25224:6:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "hexValue": "30",
                                                                                    "id": 6233,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "25233:1:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                },
                                                                                "src": "25224:10:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 6235,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "25224:10:16"
                                                                        }
                                                                    ]
                                                                },
                                                                "id": 6237,
                                                                "nodeType": "IfStatement",
                                                                "src": "24040:1214:16",
                                                                "trueBody": {
                                                                    "id": 6172,
                                                                    "nodeType": "Block",
                                                                    "src": "24103:625:16",
                                                                    "statements": [
                                                                        {
                                                                            "expression": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6095,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "24152:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 6096,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "seller",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11361,
                                                                                        "src": "24152:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "baseExpression": {
                                                                                                    "baseExpression": {
                                                                                                        "id": 6099,
                                                                                                        "name": "collateralBalance",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 3755,
                                                                                                        "src": "24174:17:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 6102,
                                                                                                    "indexExpression": {
                                                                                                        "expression": {
                                                                                                            "id": 6100,
                                                                                                            "name": "position",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 5884,
                                                                                                            "src": "24192:8:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 6101,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": true,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "memberName": "seller",
                                                                                                        "nodeType": "MemberAccess",
                                                                                                        "referencedDeclaration": 11361,
                                                                                                        "src": "24192:15:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "24174:34:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                        "typeString": "mapping(address => int256)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6104,
                                                                                                "indexExpression": {
                                                                                                    "id": 6103,
                                                                                                    "name": "currency",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5850,
                                                                                                    "src": "24209:8:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_address",
                                                                                                        "typeString": "address"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "24174:44:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 6098,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "24169:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                "typeString": "type(uint256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 6097,
                                                                                                "name": "uint",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "24169:4:16",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 6105,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "24169:50:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 6092,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "24133:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "id": 6091,
                                                                                            "name": "IERC20",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2938,
                                                                                            "src": "24126:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                                                "typeString": "type(contract IERC20)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6093,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "24126:16:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    },
                                                                                    "id": 6094,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "transfer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2887,
                                                                                    "src": "24126:25:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                        "typeString": "function (address,uint256) external returns (bool)"
                                                                                    }
                                                                                },
                                                                                "id": 6106,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "24126:94:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                }
                                                                            },
                                                                            "id": 6107,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24126:94:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6130,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 6108,
                                                                                            "name": "collateralAmount",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3761,
                                                                                            "src": "24243:16:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                            }
                                                                                        },
                                                                                        "id": 6111,
                                                                                        "indexExpression": {
                                                                                            "id": 6109,
                                                                                            "name": "poolId",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5861,
                                                                                            "src": "24260:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes32",
                                                                                                "typeString": "bytes32"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "24243:24:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                            "typeString": "mapping(address => uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6112,
                                                                                    "indexExpression": {
                                                                                        "id": 6110,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "24268:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": true,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "24243:34:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "baseExpression": {
                                                                                                "baseExpression": {
                                                                                                    "id": 6115,
                                                                                                    "name": "collateralAmount",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3761,
                                                                                                    "src": "24289:16:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                        "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6117,
                                                                                                "indexExpression": {
                                                                                                    "id": 6116,
                                                                                                    "name": "poolId",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5861,
                                                                                                    "src": "24306:6:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes32",
                                                                                                        "typeString": "bytes32"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "24289:24:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                                    "typeString": "mapping(address => uint256)"
                                                                                                }
                                                                                            },
                                                                                            "id": 6119,
                                                                                            "indexExpression": {
                                                                                                "id": 6118,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "24314:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "24289:34:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "baseExpression": {
                                                                                                        "baseExpression": {
                                                                                                            "id": 6122,
                                                                                                            "name": "collateralBalance",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "src": "24330:17:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 6125,
                                                                                                        "indexExpression": {
                                                                                                            "expression": {
                                                                                                                "id": 6123,
                                                                                                                "name": "position",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 5884,
                                                                                                                "src": "24348:8:16",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                                }
                                                                                                            },
                                                                                                            "id": 6124,
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "memberName": "seller",
                                                                                                            "nodeType": "MemberAccess",
                                                                                                            "referencedDeclaration": 11361,
                                                                                                            "src": "24348:15:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_address",
                                                                                                                "typeString": "address"
                                                                                                            }
                                                                                                        },
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": true,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "IndexAccess",
                                                                                                        "src": "24330:34:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                            "typeString": "mapping(address => int256)"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 6127,
                                                                                                    "indexExpression": {
                                                                                                        "id": 6126,
                                                                                                        "name": "currency",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 5850,
                                                                                                        "src": "24365:8:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "24330:44:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_int256",
                                                                                                        "typeString": "int256"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_int256",
                                                                                                        "typeString": "int256"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6121,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                                "src": "24325:4:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                    "typeString": "type(uint256)"
                                                                                                },
                                                                                                "typeName": {
                                                                                                    "id": 6120,
                                                                                                    "name": "uint",
                                                                                                    "nodeType": "ElementaryTypeName",
                                                                                                    "src": "24325:4:16",
                                                                                                    "typeDescriptions": {}
                                                                                                }
                                                                                            },
                                                                                            "id": 6128,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "typeConversion",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "24325:50:16",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 6113,
                                                                                            "name": "Math",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "src": "24280:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                                "typeString": "type(library Math)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6114,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "sub",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 2177,
                                                                                        "src": "24280:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6129,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "24280:96:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "src": "24243:133:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 6131,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24243:133:16"
                                                                        },
                                                                        {
                                                                            "eventCall": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "hexValue": "77697468647261776c",
                                                                                        "id": 6133,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "string",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "24415:11:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                        },
                                                                                        "value": "withdrawl"
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6134,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "24428:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 6135,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "seller",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11361,
                                                                                        "src": "24428:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 6136,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "24445:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 6137,
                                                                                                "name": "collateralBalance",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 3755,
                                                                                                "src": "24455:17:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                                                }
                                                                                            },
                                                                                            "id": 6140,
                                                                                            "indexExpression": {
                                                                                                "expression": {
                                                                                                    "id": 6138,
                                                                                                    "name": "position",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5884,
                                                                                                    "src": "24473:8:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6139,
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "memberName": "seller",
                                                                                                "nodeType": "MemberAccess",
                                                                                                "referencedDeclaration": 11361,
                                                                                                "src": "24473:15:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "24455:34:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                "typeString": "mapping(address => int256)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6142,
                                                                                        "indexExpression": {
                                                                                            "id": 6141,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "24490:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "24455:44:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "expression": {
                                                                                            "id": 6143,
                                                                                            "name": "block",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -4,
                                                                                            "src": "24501:5:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_block",
                                                                                                "typeString": "block"
                                                                                            }
                                                                                        },
                                                                                        "id": 6144,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "timestamp",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "24501:15:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "id": 6132,
                                                                                    "name": "collateral",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3855,
                                                                                    "src": "24404:10:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                                                        "typeString": "function (bytes32,address,address,int256,uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 6145,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "24404:113:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 6146,
                                                                            "nodeType": "EmitStatement",
                                                                            "src": "24399:118:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6161,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "id": 6147,
                                                                                    "name": "amount",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5852,
                                                                                    "src": "24540:6:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 6150,
                                                                                            "name": "amount",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5852,
                                                                                            "src": "24558:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "baseExpression": {
                                                                                                        "baseExpression": {
                                                                                                            "id": 6153,
                                                                                                            "name": "collateralBalance",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "src": "24571:17:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 6156,
                                                                                                        "indexExpression": {
                                                                                                            "expression": {
                                                                                                                "id": 6154,
                                                                                                                "name": "position",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 5884,
                                                                                                                "src": "24589:8:16",
                                                                                                                "typeDescriptions": {
                                                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                                }
                                                                                                            },
                                                                                                            "id": 6155,
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "memberName": "seller",
                                                                                                            "nodeType": "MemberAccess",
                                                                                                            "referencedDeclaration": 11361,
                                                                                                            "src": "24589:15:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_address",
                                                                                                                "typeString": "address"
                                                                                                            }
                                                                                                        },
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": true,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "IndexAccess",
                                                                                                        "src": "24571:34:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                            "typeString": "mapping(address => int256)"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 6158,
                                                                                                    "indexExpression": {
                                                                                                        "id": 6157,
                                                                                                        "name": "currency",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 5850,
                                                                                                        "src": "24606:8:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "24571:44:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_int256",
                                                                                                        "typeString": "int256"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_int256",
                                                                                                        "typeString": "int256"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6152,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                                "src": "24566:4:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                    "typeString": "type(uint256)"
                                                                                                },
                                                                                                "typeName": {
                                                                                                    "id": 6151,
                                                                                                    "name": "uint",
                                                                                                    "nodeType": "ElementaryTypeName",
                                                                                                    "src": "24566:4:16",
                                                                                                    "typeDescriptions": {}
                                                                                                }
                                                                                            },
                                                                                            "id": 6159,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "typeConversion",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "24566:50:16",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 6148,
                                                                                            "name": "Math",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "src": "24549:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                                "typeString": "type(library Math)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6149,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "sub",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 2177,
                                                                                        "src": "24549:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6160,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "24549:68:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "src": "24540:77:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 6162,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24540:77:16"
                                                                        },
                                                                        {
                                                                            "expression": {
                                                                                "id": 6170,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftHandSide": {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 6163,
                                                                                            "name": "collateralBalance",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "src": "24640:17:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                                            }
                                                                                        },
                                                                                        "id": 6167,
                                                                                        "indexExpression": {
                                                                                            "expression": {
                                                                                                "id": 6164,
                                                                                                "name": "position",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5884,
                                                                                                "src": "24658:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                }
                                                                                            },
                                                                                            "id": 6165,
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "seller",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 11361,
                                                                                            "src": "24658:15:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "24640:34:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                            "typeString": "mapping(address => int256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6168,
                                                                                    "indexExpression": {
                                                                                        "id": 6166,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "24675:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": true,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "24640:44:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "Assignment",
                                                                                "operator": "=",
                                                                                "rightHandSide": {
                                                                                    "hexValue": "30",
                                                                                    "id": 6169,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "24687:1:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                                        "typeString": "int_const 0"
                                                                                    },
                                                                                    "value": "0"
                                                                                },
                                                                                "src": "24640:48:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 6171,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "24640:48:16"
                                                                        }
                                                                    ]
                                                                }
                                                            }
                                                        ]
                                                    }
                                                },
                                                "id": 6240,
                                                "nodeType": "IfStatement",
                                                "src": "22500:2859:16",
                                                "trueBody": {
                                                    "id": 6065,
                                                    "nodeType": "Block",
                                                    "src": "22579:1342:16",
                                                    "statements": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                "id": 5917,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5909,
                                                                            "name": "amount",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5852,
                                                                            "src": "22605:6:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 5908,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "22601:3:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5907,
                                                                            "name": "int",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "22601:3:16",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5910,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "22601:11:16",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">=",
                                                                "rightExpression": {
                                                                    "baseExpression": {
                                                                        "baseExpression": {
                                                                            "id": 5911,
                                                                            "name": "collateralBalance",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3755,
                                                                            "src": "22616:17:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                            }
                                                                        },
                                                                        "id": 5914,
                                                                        "indexExpression": {
                                                                            "expression": {
                                                                                "id": 5912,
                                                                                "name": "position",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5884,
                                                                                "src": "22634:8:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                }
                                                                            },
                                                                            "id": 5913,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "buyer",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 11359,
                                                                            "src": "22634:14:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "22616:33:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                            "typeString": "mapping(address => int256)"
                                                                        }
                                                                    },
                                                                    "id": 5916,
                                                                    "indexExpression": {
                                                                        "id": 5915,
                                                                        "name": "currency",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5850,
                                                                        "src": "22650:8:16",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "22616:43:16",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "src": "22601:58:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 6063,
                                                                "nodeType": "Block",
                                                                "src": "23300:500:16",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6004,
                                                                                        "name": "position",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5884,
                                                                                        "src": "23349:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 6005,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "buyer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 11359,
                                                                                    "src": "23349:14:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6006,
                                                                                    "name": "amount",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5852,
                                                                                    "src": "23365:6:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 6001,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "23330:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6000,
                                                                                        "name": "IERC20",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2938,
                                                                                        "src": "23323:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                                            "typeString": "type(contract IERC20)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6002,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "23323:16:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 6003,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "transfer",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 2887,
                                                                                "src": "23323:25:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 6007,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "23323:49:16",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 6008,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23323:49:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6023,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "baseExpression": {
                                                                                        "id": 6009,
                                                                                        "name": "collateralAmount",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3761,
                                                                                        "src": "23395:16:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                            "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                        }
                                                                                    },
                                                                                    "id": 6012,
                                                                                    "indexExpression": {
                                                                                        "id": 6010,
                                                                                        "name": "poolId",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5861,
                                                                                        "src": "23412:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "23395:24:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                        "typeString": "mapping(address => uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 6013,
                                                                                "indexExpression": {
                                                                                    "id": 6011,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "23420:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "23395:34:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 6016,
                                                                                                "name": "collateralAmount",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 3761,
                                                                                                "src": "23441:16:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                    "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                                }
                                                                                            },
                                                                                            "id": 6018,
                                                                                            "indexExpression": {
                                                                                                "id": 6017,
                                                                                                "name": "poolId",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5861,
                                                                                                "src": "23458:6:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "23441:24:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                                "typeString": "mapping(address => uint256)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6020,
                                                                                        "indexExpression": {
                                                                                            "id": 6019,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "23466:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "23441:34:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "id": 6021,
                                                                                        "name": "amount",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5852,
                                                                                        "src": "23477:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "id": 6014,
                                                                                        "name": "Math",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2367,
                                                                                        "src": "23432:4:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                            "typeString": "type(library Math)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6015,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "sub",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "src": "23432:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 6022,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "23432:52:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "23395:89:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 6024,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23395:89:16"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "77697468647261776c",
                                                                                    "id": 6026,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "23526:11:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                        "typeString": "literal_string \"withdrawl\""
                                                                                    },
                                                                                    "value": "withdrawl"
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6027,
                                                                                        "name": "position",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5884,
                                                                                        "src": "23539:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 6028,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "buyer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 11359,
                                                                                    "src": "23539:14:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 6029,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "23555:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 6032,
                                                                                            "name": "amount",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5852,
                                                                                            "src": "23569:6:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6031,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "23565:3:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                                            "typeString": "type(int256)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 6030,
                                                                                            "name": "int",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "23565:3:16",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 6033,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "23565:11:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 6034,
                                                                                        "name": "block",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": -4,
                                                                                        "src": "23578:5:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_block",
                                                                                            "typeString": "block"
                                                                                        }
                                                                                    },
                                                                                    "id": 6035,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "timestamp",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "23578:15:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                        "typeString": "literal_string \"withdrawl\""
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 6025,
                                                                                "name": "collateral",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3855,
                                                                                "src": "23515:10:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                                                    "typeString": "function (bytes32,address,address,int256,uint256)"
                                                                                }
                                                                            },
                                                                            "id": 6036,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "23515:79:16",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 6037,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "23510:84:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6057,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "baseExpression": {
                                                                                        "id": 6038,
                                                                                        "name": "collateralBalance",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3755,
                                                                                        "src": "23634:17:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                                        }
                                                                                    },
                                                                                    "id": 6042,
                                                                                    "indexExpression": {
                                                                                        "expression": {
                                                                                            "id": 6039,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "23652:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 6040,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "buyer",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11359,
                                                                                        "src": "23652:14:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "23634:33:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                        "typeString": "mapping(address => int256)"
                                                                                    }
                                                                                },
                                                                                "id": 6043,
                                                                                "indexExpression": {
                                                                                    "id": 6041,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "23668:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "23634:43:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 6046,
                                                                                                "name": "collateralBalance",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 3755,
                                                                                                "src": "23689:17:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                    "typeString": "mapping(address => mapping(address => int256))"
                                                                                                }
                                                                                            },
                                                                                            "id": 6049,
                                                                                            "indexExpression": {
                                                                                                "expression": {
                                                                                                    "id": 6047,
                                                                                                    "name": "position",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5884,
                                                                                                    "src": "23707:8:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                        "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                    }
                                                                                                },
                                                                                                "id": 6048,
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "memberName": "buyer",
                                                                                                "nodeType": "MemberAccess",
                                                                                                "referencedDeclaration": 11359,
                                                                                                "src": "23707:14:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "23689:33:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                "typeString": "mapping(address => int256)"
                                                                                            }
                                                                                        },
                                                                                        "id": 6051,
                                                                                        "indexExpression": {
                                                                                            "id": 6050,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "23723:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "23689:43:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "id": 6054,
                                                                                                "name": "amount",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5852,
                                                                                                "src": "23738:6:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 6053,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "23734:3:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                                                "typeString": "type(int256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 6052,
                                                                                                "name": "int",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "23734:3:16",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 6055,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "23734:11:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "id": 6044,
                                                                                        "name": "Math",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2367,
                                                                                        "src": "23680:4:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                            "typeString": "type(library Math)"
                                                                                        }
                                                                                    },
                                                                                    "id": 6045,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "sub",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2218,
                                                                                    "src": "23680:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$",
                                                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                                                    }
                                                                                },
                                                                                "id": 6056,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "23680:66:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "src": "23634:112:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        },
                                                                        "id": 6058,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23634:112:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 6061,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 6059,
                                                                                "name": "amount",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5852,
                                                                                "src": "23770:6:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "hexValue": "30",
                                                                                "id": 6060,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "23779:1:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                "value": "0"
                                                                            },
                                                                            "src": "23770:10:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 6062,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23770:10:16"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 6064,
                                                            "nodeType": "IfStatement",
                                                            "src": "22598:1202:16",
                                                            "trueBody": {
                                                                "id": 5999,
                                                                "nodeType": "Block",
                                                                "src": "22660:618:16",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 5922,
                                                                                        "name": "position",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5884,
                                                                                        "src": "22709:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 5923,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "buyer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 11359,
                                                                                    "src": "22709:14:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "baseExpression": {
                                                                                                "baseExpression": {
                                                                                                    "id": 5926,
                                                                                                    "name": "collateralBalance",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "src": "22730:17:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                        "typeString": "mapping(address => mapping(address => int256))"
                                                                                                    }
                                                                                                },
                                                                                                "id": 5929,
                                                                                                "indexExpression": {
                                                                                                    "expression": {
                                                                                                        "id": 5927,
                                                                                                        "name": "position",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 5884,
                                                                                                        "src": "22748:8:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 5928,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "memberName": "buyer",
                                                                                                    "nodeType": "MemberAccess",
                                                                                                    "referencedDeclaration": 11359,
                                                                                                    "src": "22748:14:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_address",
                                                                                                        "typeString": "address"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "22730:33:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                    "typeString": "mapping(address => int256)"
                                                                                                }
                                                                                            },
                                                                                            "id": 5931,
                                                                                            "indexExpression": {
                                                                                                "id": 5930,
                                                                                                "name": "currency",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5850,
                                                                                                "src": "22764:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "22730:43:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5925,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "22725:4:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                                                            "typeString": "type(uint256)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 5924,
                                                                                            "name": "uint",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "22725:4:16",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 5932,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "22725:49:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 5919,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "22690:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5918,
                                                                                        "name": "IERC20",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2938,
                                                                                        "src": "22683:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                                                            "typeString": "type(contract IERC20)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5920,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "22683:16:16",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 5921,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "transfer",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 2887,
                                                                                "src": "22683:25:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 5933,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "22683:92:16",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 5934,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "22683:92:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 5957,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "baseExpression": {
                                                                                        "id": 5935,
                                                                                        "name": "collateralAmount",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3761,
                                                                                        "src": "22798:16:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                            "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                        }
                                                                                    },
                                                                                    "id": 5938,
                                                                                    "indexExpression": {
                                                                                        "id": 5936,
                                                                                        "name": "poolId",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5861,
                                                                                        "src": "22815:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "22798:24:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                        "typeString": "mapping(address => uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 5939,
                                                                                "indexExpression": {
                                                                                    "id": 5937,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "22823:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "22798:34:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "baseExpression": {
                                                                                            "baseExpression": {
                                                                                                "id": 5942,
                                                                                                "name": "collateralAmount",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 3761,
                                                                                                "src": "22844:16:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                                                    "typeString": "mapping(bytes32 => mapping(address => uint256))"
                                                                                                }
                                                                                            },
                                                                                            "id": 5944,
                                                                                            "indexExpression": {
                                                                                                "id": 5943,
                                                                                                "name": "poolId",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5861,
                                                                                                "src": "22861:6:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "IndexAccess",
                                                                                            "src": "22844:24:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                                                "typeString": "mapping(address => uint256)"
                                                                                            }
                                                                                        },
                                                                                        "id": 5946,
                                                                                        "indexExpression": {
                                                                                            "id": 5945,
                                                                                            "name": "currency",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "src": "22869:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "22844:34:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "baseExpression": {
                                                                                                    "baseExpression": {
                                                                                                        "id": 5949,
                                                                                                        "name": "collateralBalance",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 3755,
                                                                                                        "src": "22885:17:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 5952,
                                                                                                    "indexExpression": {
                                                                                                        "expression": {
                                                                                                            "id": 5950,
                                                                                                            "name": "position",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 5884,
                                                                                                            "src": "22903:8:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 5951,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": true,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "memberName": "buyer",
                                                                                                        "nodeType": "MemberAccess",
                                                                                                        "referencedDeclaration": 11359,
                                                                                                        "src": "22903:14:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "22885:33:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                        "typeString": "mapping(address => int256)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 5954,
                                                                                                "indexExpression": {
                                                                                                    "id": 5953,
                                                                                                    "name": "currency",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5850,
                                                                                                    "src": "22919:8:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_address",
                                                                                                        "typeString": "address"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "22885:43:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 5948,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "22880:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                "typeString": "type(uint256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 5947,
                                                                                                "name": "uint",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "22880:4:16",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 5955,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "22880:49:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "id": 5940,
                                                                                        "name": "Math",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2367,
                                                                                        "src": "22835:4:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                            "typeString": "type(library Math)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5941,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "sub",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "src": "22835:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 5956,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "22835:95:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "22798:132:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 5958,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "22798:132:16"
                                                                    },
                                                                    {
                                                                        "eventCall": {
                                                                            "arguments": [
                                                                                {
                                                                                    "hexValue": "77697468647261776c",
                                                                                    "id": 5960,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "string",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "22969:11:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                        "typeString": "literal_string \"withdrawl\""
                                                                                    },
                                                                                    "value": "withdrawl"
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 5961,
                                                                                        "name": "position",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5884,
                                                                                        "src": "22982:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                            "typeString": "struct IMarginManager.tradePosition memory"
                                                                                        }
                                                                                    },
                                                                                    "id": 5962,
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "buyer",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 11359,
                                                                                    "src": "22982:14:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 5963,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "22998:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "baseExpression": {
                                                                                        "baseExpression": {
                                                                                            "id": 5964,
                                                                                            "name": "collateralBalance",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "src": "23008:17:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                "typeString": "mapping(address => mapping(address => int256))"
                                                                                            }
                                                                                        },
                                                                                        "id": 5967,
                                                                                        "indexExpression": {
                                                                                            "expression": {
                                                                                                "id": 5965,
                                                                                                "name": "position",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 5884,
                                                                                                "src": "23026:8:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                }
                                                                                            },
                                                                                            "id": 5966,
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "memberName": "buyer",
                                                                                            "nodeType": "MemberAccess",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "src": "23026:14:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "IndexAccess",
                                                                                        "src": "23008:33:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                            "typeString": "mapping(address => int256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5969,
                                                                                    "indexExpression": {
                                                                                        "id": 5968,
                                                                                        "name": "currency",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5850,
                                                                                        "src": "23042:8:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "23008:43:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "id": 5970,
                                                                                        "name": "block",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": -4,
                                                                                        "src": "23053:5:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_magic_block",
                                                                                            "typeString": "block"
                                                                                        }
                                                                                    },
                                                                                    "id": 5971,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "timestamp",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "src": "23053:15:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                        "typeString": "literal_string \"withdrawl\""
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 5959,
                                                                                "name": "collateral",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3855,
                                                                                "src": "22958:10:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_int256_$_t_uint256_$returns$__$",
                                                                                    "typeString": "function (bytes32,address,address,int256,uint256)"
                                                                                }
                                                                            },
                                                                            "id": 5972,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "22958:111:16",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 5973,
                                                                        "nodeType": "EmitStatement",
                                                                        "src": "22953:116:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 5988,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "id": 5974,
                                                                                "name": "amount",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5852,
                                                                                "src": "23092:6:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 5977,
                                                                                        "name": "amount",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5852,
                                                                                        "src": "23110:6:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "baseExpression": {
                                                                                                    "baseExpression": {
                                                                                                        "id": 5980,
                                                                                                        "name": "collateralBalance",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 3755,
                                                                                                        "src": "23123:17:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                                                        }
                                                                                                    },
                                                                                                    "id": 5983,
                                                                                                    "indexExpression": {
                                                                                                        "expression": {
                                                                                                            "id": 5981,
                                                                                                            "name": "position",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 5884,
                                                                                                            "src": "23141:8:16",
                                                                                                            "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                                            }
                                                                                                        },
                                                                                                        "id": 5982,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": true,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "memberName": "buyer",
                                                                                                        "nodeType": "MemberAccess",
                                                                                                        "referencedDeclaration": 11359,
                                                                                                        "src": "23141:14:16",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    },
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "IndexAccess",
                                                                                                    "src": "23123:33:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                                        "typeString": "mapping(address => int256)"
                                                                                                    }
                                                                                                },
                                                                                                "id": 5985,
                                                                                                "indexExpression": {
                                                                                                    "id": 5984,
                                                                                                    "name": "currency",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 5850,
                                                                                                    "src": "23157:8:16",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_address",
                                                                                                        "typeString": "address"
                                                                                                    }
                                                                                                },
                                                                                                "isConstant": false,
                                                                                                "isLValue": true,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "IndexAccess",
                                                                                                "src": "23123:43:16",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                }
                                                                                            ],
                                                                                            "id": 5979,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                                            "src": "23118:4:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                                                "typeString": "type(uint256)"
                                                                                            },
                                                                                            "typeName": {
                                                                                                "id": 5978,
                                                                                                "name": "uint",
                                                                                                "nodeType": "ElementaryTypeName",
                                                                                                "src": "23118:4:16",
                                                                                                "typeDescriptions": {}
                                                                                            }
                                                                                        },
                                                                                        "id": 5986,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "kind": "typeConversion",
                                                                                        "lValueRequested": false,
                                                                                        "names": [],
                                                                                        "nodeType": "FunctionCall",
                                                                                        "src": "23118:49:16",
                                                                                        "tryCall": false,
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "id": 5975,
                                                                                        "name": "Math",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 2367,
                                                                                        "src": "23101:4:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                                                            "typeString": "type(library Math)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5976,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "memberName": "sub",
                                                                                    "nodeType": "MemberAccess",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "src": "23101:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 5987,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "23101:67:16",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "23092:76:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 5989,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23092:76:16"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 5997,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftHandSide": {
                                                                                "baseExpression": {
                                                                                    "baseExpression": {
                                                                                        "id": 5990,
                                                                                        "name": "collateralBalance",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3755,
                                                                                        "src": "23191:17:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_int256_$_$",
                                                                                            "typeString": "mapping(address => mapping(address => int256))"
                                                                                        }
                                                                                    },
                                                                                    "id": 5994,
                                                                                    "indexExpression": {
                                                                                        "expression": {
                                                                                            "id": 5991,
                                                                                            "name": "position",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "src": "23209:8:16",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                                "typeString": "struct IMarginManager.tradePosition memory"
                                                                                            }
                                                                                        },
                                                                                        "id": 5992,
                                                                                        "isConstant": false,
                                                                                        "isLValue": true,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "buyer",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 11359,
                                                                                        "src": "23209:14:16",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "IndexAccess",
                                                                                    "src": "23191:33:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_int256_$",
                                                                                        "typeString": "mapping(address => int256)"
                                                                                    }
                                                                                },
                                                                                "id": 5995,
                                                                                "indexExpression": {
                                                                                    "id": 5993,
                                                                                    "name": "currency",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "src": "23225:8:16",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                "isConstant": false,
                                                                                "isLValue": true,
                                                                                "isPure": false,
                                                                                "lValueRequested": true,
                                                                                "nodeType": "IndexAccess",
                                                                                "src": "23191:43:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "nodeType": "Assignment",
                                                                            "operator": "=",
                                                                            "rightHandSide": {
                                                                                "hexValue": "30",
                                                                                "id": 5996,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "23237:1:16",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                },
                                                                                "value": "0"
                                                                            },
                                                                            "src": "23191:47:16",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        },
                                                                        "id": 5998,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "23191:47:16"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 5877,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "id": 5870,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5867,
                                            "src": "22347:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<",
                                        "rightExpression": {
                                            "expression": {
                                                "baseExpression": {
                                                    "baseExpression": {
                                                        "id": 5871,
                                                        "name": "positions",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3775,
                                                        "src": "22349:9:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$_$",
                                                            "typeString": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))"
                                                        }
                                                    },
                                                    "id": 5873,
                                                    "indexExpression": {
                                                        "id": 5872,
                                                        "name": "security",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5848,
                                                        "src": "22359:8:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "22349:19:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage_$",
                                                        "typeString": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                    }
                                                },
                                                "id": 5875,
                                                "indexExpression": {
                                                    "id": 5874,
                                                    "name": "currency",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5850,
                                                    "src": "22369:8:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "22349:29:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_tradePosition_$11372_storage_$dyn_storage",
                                                    "typeString": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                }
                                            },
                                            "id": 5876,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "22349:36:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "22347:38:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 6242,
                                    "initializationExpression": {
                                        "assignments": [
                                            5867
                                        ],
                                        "declarations": [
                                            {
                                                "constant": false,
                                                "id": 5867,
                                                "mutability": "mutable",
                                                "name": "i",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6242,
                                                "src": "22334:9:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5866,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "22334:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "id": 5869,
                                        "initialValue": {
                                            "hexValue": "30",
                                            "id": 5868,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "22344:1:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "22334:11:16"
                                    },
                                    "loopExpression": {
                                        "expression": {
                                            "id": 5879,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "++",
                                            "prefix": false,
                                            "src": "22387:3:16",
                                            "subExpression": {
                                                "id": 5878,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5867,
                                                "src": "22387:1:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "id": 5880,
                                        "nodeType": "ExpressionStatement",
                                        "src": "22387:3:16"
                                    },
                                    "nodeType": "ForStatement",
                                    "src": "22330:3040:16"
                                }
                            ]
                        },
                        "functionSelector": "d9caed12",
                        "id": 6244,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "expression": {
                                            "id": 5856,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "22258:3:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                            }
                                        },
                                        "id": 5857,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "22258:10:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    }
                                ],
                                "id": 5858,
                                "modifierName": {
                                    "id": 5855,
                                    "name": "onlyTrader",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3908,
                                    "src": "22247:10:16",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$_t_address_$",
                                        "typeString": "modifier (address)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "22247:22:16"
                            }
                        ],
                        "name": "withdraw",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 5854,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "22229:8:16"
                        },
                        "parameters": {
                            "id": 5853,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 5848,
                                    "mutability": "mutable",
                                    "name": "security",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6244,
                                    "src": "22177:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5847,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22177:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5850,
                                    "mutability": "mutable",
                                    "name": "currency",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6244,
                                    "src": "22195:16:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 5849,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22195:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 5852,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6244,
                                    "src": "22213:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 5851,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "22213:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "22176:52:16"
                        },
                        "returnParameters": {
                            "id": 5859,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "22269:0:16"
                        },
                        "scope": 6363,
                        "src": "22159:3218:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            11443
                        ],
                        "body": {
                            "id": 6298,
                            "nodeType": "Block",
                            "src": "25467:364:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "id": 6256,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "expression": {
                                                        "id": 6253,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "25486:3:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 6254,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "25486:10:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                    "id": 6255,
                                                    "name": "_distribution",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3716,
                                                    "src": "25498:13:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "src": "25486:25:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "556e617574686f72697a656420636f6c6c656374696f6e2072657175657374",
                                                "id": 6257,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "25513:33:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_b96be16b05b75bc8355a55580cdf55506a64fe0095ac0411c167b4ced0d6ed7d",
                                                    "typeString": "literal_string \"Unauthorized collection request\""
                                                },
                                                "value": "Unauthorized collection request"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_b96be16b05b75bc8355a55580cdf55506a64fe0095ac0411c167b4ced0d6ed7d",
                                                    "typeString": "literal_string \"Unauthorized collection request\""
                                                }
                                            ],
                                            "id": 6252,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "25478:7:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 6258,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25478:69:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6259,
                                    "nodeType": "ExpressionStatement",
                                    "src": "25478:69:16"
                                },
                                {
                                    "assignments": [
                                        6261
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6261,
                                            "mutability": "mutable",
                                            "name": "feeCollected",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6298,
                                            "src": "25558:20:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6260,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "25558:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6265,
                                    "initialValue": {
                                        "baseExpression": {
                                            "id": 6262,
                                            "name": "fees",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3747,
                                            "src": "25581:4:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            }
                                        },
                                        "id": 6264,
                                        "indexExpression": {
                                            "id": 6263,
                                            "name": "_token",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6246,
                                            "src": "25586:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "25581:12:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "25558:35:16"
                                },
                                {
                                    "expression": {
                                        "id": 6276,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 6266,
                                                "name": "fees",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3747,
                                                "src": "25604:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                    "typeString": "mapping(address => uint256)"
                                                }
                                            },
                                            "id": 6268,
                                            "indexExpression": {
                                                "id": 6267,
                                                "name": "_token",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6246,
                                                "src": "25609:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "25604:12:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "baseExpression": {
                                                        "id": 6271,
                                                        "name": "fees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3747,
                                                        "src": "25628:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 6273,
                                                    "indexExpression": {
                                                        "id": 6272,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6246,
                                                        "src": "25633:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "25628:12:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                {
                                                    "id": 6274,
                                                    "name": "feeCollected",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6261,
                                                    "src": "25642:12:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                ],
                                                "expression": {
                                                    "id": 6269,
                                                    "name": "Math",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2367,
                                                    "src": "25619:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                        "typeString": "type(library Math)"
                                                    }
                                                },
                                                "id": 6270,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "sub",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2177,
                                                "src": "25619:8:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                            },
                                            "id": 6275,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "25619:36:16",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "25604:51:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 6277,
                                    "nodeType": "ExpressionStatement",
                                    "src": "25604:51:16"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 6282,
                                                "name": "_distribution",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3716,
                                                "src": "25690:13:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 6283,
                                                "name": "feeCollected",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6261,
                                                "src": "25705:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "id": 6279,
                                                        "name": "_token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6246,
                                                        "src": "25673:6:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 6278,
                                                    "name": "IERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2938,
                                                    "src": "25666:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$2938_$",
                                                        "typeString": "type(contract IERC20)"
                                                    }
                                                },
                                                "id": 6280,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "25666:14:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "id": 6281,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "transfer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2887,
                                            "src": "25666:23:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                "typeString": "function (address,uint256) external returns (bool)"
                                            }
                                        },
                                        "id": 6284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25666:52:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 6285,
                                    "nodeType": "ExpressionStatement",
                                    "src": "25666:52:16"
                                },
                                {
                                    "eventCall": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 6289,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "25756:4:16",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                            "typeString": "contract MarginIssueManager"
                                                        }
                                                    ],
                                                    "id": 6288,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "25748:7:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 6287,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "25748:7:16",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 6290,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "25748:13:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            {
                                                "id": 6291,
                                                "name": "feeCollected",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6261,
                                                "src": "25763:12:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "id": 6292,
                                                    "name": "block",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -4,
                                                    "src": "25777:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_magic_block",
                                                        "typeString": "block"
                                                    }
                                                },
                                                "id": 6293,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "timestamp",
                                                "nodeType": "MemberAccess",
                                                "src": "25777:15:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "id": 6286,
                                            "name": "feecollection",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3843,
                                            "src": "25734:13:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,uint256,uint256)"
                                            }
                                        },
                                        "id": 6294,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25734:59:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 6295,
                                    "nodeType": "EmitStatement",
                                    "src": "25729:64:16"
                                },
                                {
                                    "expression": {
                                        "id": 6296,
                                        "name": "feeCollected",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6261,
                                        "src": "25811:12:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 6251,
                                    "id": 6297,
                                    "nodeType": "Return",
                                    "src": "25804:19:16"
                                }
                            ]
                        },
                        "functionSelector": "2d916746",
                        "id": 6299,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTradingFeeCollected",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 6248,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "25433:8:16"
                        },
                        "parameters": {
                            "id": 6247,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6246,
                                    "mutability": "mutable",
                                    "name": "_token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6299,
                                    "src": "25417:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 6245,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "25417:7:16",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "25416:16:16"
                        },
                        "returnParameters": {
                            "id": 6251,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6250,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6299,
                                    "src": "25459:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6249,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "25459:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "25458:9:16"
                        },
                        "scope": 6363,
                        "src": "25385:446:16",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 6310,
                            "nodeType": "Block",
                            "src": "26067:126:16",
                            "statements": [
                                {
                                    "AST": {
                                        "nodeType": "YulBlock",
                                        "src": "26144:42:16",
                                        "statements": [
                                            {
                                                "nodeType": "YulAssignment",
                                                "src": "26159:16:16",
                                                "value": {
                                                    "name": "tokens",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "26169:6:16"
                                                },
                                                "variableNames": [
                                                    {
                                                        "name": "assets",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "26159:6:16"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "evmVersion": "istanbul",
                                    "externalReferences": [
                                        {
                                            "declaration": 6307,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "26159:6:16",
                                            "valueSize": 1
                                        },
                                        {
                                            "declaration": 6303,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "26169:6:16",
                                            "valueSize": 1
                                        }
                                    ],
                                    "id": 6309,
                                    "nodeType": "InlineAssembly",
                                    "src": "26135:51:16"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 6300,
                            "nodeType": "StructuredDocumentation",
                            "src": "25841:117:16",
                            "text": " @dev This helper function is a fast and cheap way to convert between IERC20[] and IAsset[] types"
                        },
                        "id": 6311,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_convertERC20sToAssets",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6304,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6303,
                                    "mutability": "mutable",
                                    "name": "tokens",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6311,
                                    "src": "25996:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                        "typeString": "contract IERC20[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 6301,
                                            "name": "IERC20",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 2938,
                                            "src": "25996:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$2938",
                                                "typeString": "contract IERC20"
                                            }
                                        },
                                        "id": 6302,
                                        "nodeType": "ArrayTypeName",
                                        "src": "25996:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_storage_ptr",
                                            "typeString": "contract IERC20[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "25995:24:16"
                        },
                        "returnParameters": {
                            "id": 6308,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6307,
                                    "mutability": "mutable",
                                    "name": "assets",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6311,
                                    "src": "26043:22:16",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                        "typeString": "contract IAsset[]"
                                    },
                                    "typeName": {
                                        "baseType": {
                                            "id": 6305,
                                            "name": "IAsset",
                                            "nodeType": "UserDefinedTypeName",
                                            "referencedDeclaration": 3127,
                                            "src": "26043:6:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IAsset_$3127",
                                                "typeString": "contract IAsset"
                                            }
                                        },
                                        "id": 6306,
                                        "nodeType": "ArrayTypeName",
                                        "src": "26043:8:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_storage_ptr",
                                            "typeString": "contract IAsset[]"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "26042:24:16"
                        },
                        "scope": 6363,
                        "src": "25964:229:16",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 6345,
                            "nodeType": "Block",
                            "src": "26444:347:16",
                            "statements": [
                                {
                                    "assignments": [
                                        6320
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6320,
                                            "mutability": "mutable",
                                            "name": "tokenDecimals",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6345,
                                            "src": "26536:21:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6319,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "26536:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6329,
                                    "initialValue": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 6324,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 6314,
                                                                "src": "26574:5:16",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            ],
                                                            "id": 6323,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "26566:7:16",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 6322,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "26566:7:16",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 6325,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "26566:14:16",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 6321,
                                                    "name": "ERC20",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2860,
                                                    "src": "26560:5:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_ERC20_$2860_$",
                                                        "typeString": "type(contract ERC20)"
                                                    }
                                                },
                                                "id": 6326,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "26560:21:16",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_ERC20_$2860",
                                                    "typeString": "contract ERC20"
                                                }
                                            },
                                            "id": 6327,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "decimals",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2459,
                                            "src": "26560:30:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
                                                "typeString": "function () view external returns (uint8)"
                                            }
                                        },
                                        "id": 6328,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26560:32:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26536:56:16"
                                },
                                {
                                    "assignments": [
                                        6331
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 6331,
                                            "mutability": "mutable",
                                            "name": "decimalsDifference",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6345,
                                            "src": "26670:26:16",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6330,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "26670:7:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 6337,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "hexValue": "3138",
                                                "id": 6334,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "26708:2:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                "value": "18"
                                            },
                                            {
                                                "id": 6335,
                                                "name": "tokenDecimals",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6320,
                                                "src": "26712:13:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_rational_18_by_1",
                                                    "typeString": "int_const 18"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 6332,
                                                "name": "Math",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2367,
                                                "src": "26699:4:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_Math_$2367_$",
                                                    "typeString": "type(library Math)"
                                                }
                                            },
                                            "id": 6333,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 2177,
                                            "src": "26699:8:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 6336,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26699:27:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26670:56:16"
                                },
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        },
                                        "id": 6343,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "expression": {
                                                "id": 6338,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 780,
                                                "src": "26744:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$780_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 6339,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "ONE",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 445,
                                            "src": "26744:14:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                            "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "id": 6342,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                                "hexValue": "3130",
                                                "id": 6340,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "26761:2:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_10_by_1",
                                                    "typeString": "int_const 10"
                                                },
                                                "value": "10"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "**",
                                            "rightExpression": {
                                                "id": 6341,
                                                "name": "decimalsDifference",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6331,
                                                "src": "26765:18:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "src": "26761:22:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "26744:39:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 6318,
                                    "id": 6344,
                                    "nodeType": "Return",
                                    "src": "26737:46:16"
                                }
                            ]
                        },
                        "documentation": {
                            "id": 6312,
                            "nodeType": "StructuredDocumentation",
                            "src": "26201:160:16",
                            "text": " @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\n it had 18 decimals."
                        },
                        "id": 6346,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_computeScalingFactor",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6315,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6314,
                                    "mutability": "mutable",
                                    "name": "token",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6346,
                                    "src": "26398:12:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                        "typeString": "contract IERC20"
                                    },
                                    "typeName": {
                                        "id": 6313,
                                        "name": "IERC20",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 2938,
                                        "src": "26398:6:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "26397:14:16"
                        },
                        "returnParameters": {
                            "id": 6318,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6317,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6346,
                                    "src": "26435:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6316,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26435:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "26434:9:16"
                        },
                        "scope": 6363,
                        "src": "26367:424:16",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 6361,
                            "nodeType": "Block",
                            "src": "26888:75:16",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 6357,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6348,
                                                "src": "26933:6:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            {
                                                "id": 6358,
                                                "name": "scalingFactor",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6350,
                                                "src": "26941:13:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 6355,
                                                "name": "FixedPoint",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 780,
                                                "src": "26914:10:16",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_FixedPoint_$780_$",
                                                    "typeString": "type(library FixedPoint)"
                                                }
                                            },
                                            "id": 6356,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mulDown",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 537,
                                            "src": "26914:18:16",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                        },
                                        "id": 6359,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "26914:41:16",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 6354,
                                    "id": 6360,
                                    "nodeType": "Return",
                                    "src": "26907:48:16"
                                }
                            ]
                        },
                        "id": 6362,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "_upscale",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 6351,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6348,
                                    "mutability": "mutable",
                                    "name": "amount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6362,
                                    "src": "26817:14:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6347,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26817:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 6350,
                                    "mutability": "mutable",
                                    "name": "scalingFactor",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6362,
                                    "src": "26833:21:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6349,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26833:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "26816:39:16"
                        },
                        "returnParameters": {
                            "id": 6354,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 6353,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6362,
                                    "src": "26879:7:16",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6352,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "26879:7:16",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "26878:9:16"
                        },
                        "scope": 6363,
                        "src": "26799:164:16",
                        "stateMutability": "pure",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 6364,
                "src": "951:26017:16"
            }
        ],
        "src": "114:26854:16"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "project:/contracts/MarginIssueManager.sol",
            "exportedSymbols": {
                "MarginIssueManager": [
                    6363
                ]
            },
            "license": "BUSL1.1"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "0.7",
                        ".1"
                    ]
                },
                "id": 3690,
                "name": "PragmaDirective",
                "src": "114:22:16"
            },
            {
                "attributes": {
                    "literals": [
                        "experimental",
                        "ABIEncoderV2"
                    ]
                },
                "id": 3691,
                "name": "PragmaDirective",
                "src": "138:33:16"
            },
            {
                "attributes": {
                    "SourceUnit": 11154,
                    "absolutePath": "project:/contracts/interfaces/IFactory.sol",
                    "file": "./interfaces/IFactory.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3692,
                "name": "ImportDirective",
                "src": "175:35:16"
            },
            {
                "attributes": {
                    "SourceUnit": 12159,
                    "absolutePath": "project:/contracts/interfaces/ISecurity.sol",
                    "file": "./interfaces/ISecurity.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3693,
                "name": "ImportDirective",
                "src": "212:36:16"
            },
            {
                "attributes": {
                    "SourceUnit": 11608,
                    "absolutePath": "project:/contracts/interfaces/IMarginOrder.sol",
                    "file": "./interfaces/IMarginOrder.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3694,
                "name": "ImportDirective",
                "src": "250:39:16"
            },
            {
                "attributes": {
                    "SourceUnit": 11518,
                    "absolutePath": "project:/contracts/interfaces/IMarginManager.sol",
                    "file": "./interfaces/IMarginManager.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3695,
                "name": "ImportDirective",
                "src": "291:41:16"
            },
            {
                "attributes": {
                    "SourceUnit": 11652,
                    "absolutePath": "project:/contracts/interfaces/IMarginTradingPool.sol",
                    "file": "./interfaces/IMarginTradingPool.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3696,
                "name": "ImportDirective",
                "src": "334:45:16"
            },
            {
                "attributes": {
                    "SourceUnit": 11684,
                    "absolutePath": "project:/contracts/interfaces/IMarginTradingPoolFactory.sol",
                    "file": "./interfaces/IMarginTradingPoolFactory.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3697,
                "name": "ImportDirective",
                "src": "381:52:16"
            },
            {
                "attributes": {
                    "SourceUnit": 3128,
                    "absolutePath": "@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol",
                    "file": "@balancer-labs/v2-vault/contracts/interfaces/IAsset.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3698,
                "name": "ImportDirective",
                "src": "437:65:16"
            },
            {
                "attributes": {
                    "SourceUnit": 3689,
                    "absolutePath": "@balancer-labs/v2-vault/contracts/interfaces/IVault.sol",
                    "file": "@balancer-labs/v2-vault/contracts/interfaces/IVault.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3699,
                "name": "ImportDirective",
                "src": "504:65:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2368,
                    "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/math/Math.sol",
                    "file": "@balancer-labs/v2-solidity-utils/contracts/math/Math.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3700,
                "name": "ImportDirective",
                "src": "573:66:16"
            },
            {
                "attributes": {
                    "SourceUnit": 781,
                    "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol",
                    "file": "@balancer-labs/v2-solidity-utils/contracts/math/FixedPoint.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3701,
                "name": "ImportDirective",
                "src": "641:72:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2861,
                    "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol",
                    "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/ERC20.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3702,
                "name": "ImportDirective",
                "src": "715:75:16"
            },
            {
                "attributes": {
                    "SourceUnit": 2939,
                    "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol",
                    "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/IERC20.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3703,
                "name": "ImportDirective",
                "src": "792:76:16"
            },
            {
                "attributes": {
                    "SourceUnit": 3046,
                    "absolutePath": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
                    "file": "@balancer-labs/v2-solidity-utils/contracts/openzeppelin/Ownable.sol",
                    "scope": 6364,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3704,
                "name": "ImportDirective",
                "src": "870:77:16"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        3045,
                        11517
                    ],
                    "contractKind": "contract",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        6363,
                        3045,
                        11517
                    ],
                    "name": "MarginIssueManager",
                    "scope": 6364
                },
                "children": [
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "IMarginManager",
                                    "referencedDeclaration": 11517,
                                    "type": "contract IMarginManager"
                                },
                                "id": 3705,
                                "name": "UserDefinedTypeName",
                                "src": "982:14:16"
                            }
                        ],
                        "id": 3706,
                        "name": "InheritanceSpecifier",
                        "src": "982:14:16"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "Ownable",
                                    "referencedDeclaration": 3045,
                                    "type": "contract Ownable"
                                },
                                "id": 3707,
                                "name": "UserDefinedTypeName",
                                "src": "998:7:16"
                            }
                        ],
                        "id": 3708,
                        "name": "InheritanceSpecifier",
                        "src": "998:7:16"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "Math",
                                    "referencedDeclaration": 2367,
                                    "type": "library Math"
                                },
                                "id": 3709,
                                "name": "UserDefinedTypeName",
                                "src": "1021:4:16"
                            }
                        ],
                        "id": 3710,
                        "name": "UsingForDirective",
                        "src": "1015:17:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_poolFactory",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 3711,
                                "name": "ElementaryTypeName",
                                "src": "1067:7:16"
                            }
                        ],
                        "id": 3712,
                        "name": "VariableDeclaration",
                        "src": "1067:28:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_vault",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 3713,
                                "name": "ElementaryTypeName",
                                "src": "1108:7:16"
                            }
                        ],
                        "id": 3714,
                        "name": "VariableDeclaration",
                        "src": "1108:22:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_distribution",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 3715,
                                "name": "ElementaryTypeName",
                                "src": "1139:7:16"
                            }
                        ],
                        "id": 3716,
                        "name": "VariableDeclaration",
                        "src": "1139:29:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_securityFactory",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "contract IFactory",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "IFactory",
                                    "referencedDeclaration": 11153,
                                    "type": "contract IFactory"
                                },
                                "id": 3717,
                                "name": "UserDefinedTypeName",
                                "src": "1177:8:16"
                            }
                        ],
                        "id": 3718,
                        "name": "VariableDeclaration",
                        "src": "1177:33:16"
                    },
                    {
                        "attributes": {
                            "constant": true,
                            "mutability": "constant",
                            "name": "_INITIAL_BPT_SUPPLY",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint256",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 3719,
                                "name": "ElementaryTypeName",
                                "src": "1219:7:16"
                            },
                            {
                                "attributes": {
                                    "commonType": {
                                        "typeIdentifier": "t_rational_5192296858534827628530496329220095_by_1",
                                        "typeString": "int_const 5192...(26 digits omitted)...0095"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "operator": "-",
                                    "type": "int_const 5192...(26 digits omitted)...0095"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "commonType": {
                                                "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                                                "typeString": "int_const 5192...(26 digits omitted)...0096"
                                            },
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "operator": "**",
                                            "type": "int_const 5192...(26 digits omitted)...0096"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "32",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "number",
                                                    "type": "int_const 2",
                                                    "value": "2"
                                                },
                                                "id": 3720,
                                                "name": "Literal",
                                                "src": "1266:1:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "type": "int_const 112"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "313132",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 112",
                                                            "value": "112"
                                                        },
                                                        "id": 3721,
                                                        "name": "Literal",
                                                        "src": "1270:3:16"
                                                    }
                                                ],
                                                "id": 3722,
                                                "name": "TupleExpression",
                                                "src": "1269:5:16"
                                            }
                                        ],
                                        "id": 3723,
                                        "name": "BinaryOperation",
                                        "src": "1266:8:16"
                                    },
                                    {
                                        "attributes": {
                                            "hexvalue": "31",
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "token": "number",
                                            "type": "int_const 1",
                                            "value": "1"
                                        },
                                        "id": 3724,
                                        "name": "Literal",
                                        "src": "1277:1:16"
                                    }
                                ],
                                "id": 3725,
                                "name": "BinaryOperation",
                                "src": "1266:12:16"
                            }
                        ],
                        "id": 3726,
                        "name": "VariableDeclaration",
                        "src": "1219:59:16"
                    },
                    {
                        "attributes": {
                            "constant": true,
                            "mutability": "constant",
                            "name": "_DEFAULT_MINIMUM_BPT",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint256",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 3727,
                                "name": "ElementaryTypeName",
                                "src": "1285:7:16"
                            },
                            {
                                "attributes": {
                                    "hexvalue": "316536",
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "token": "number",
                                    "type": "int_const 1000000",
                                    "value": "1e6"
                                },
                                "id": 3728,
                                "name": "Literal",
                                "src": "1333:3:16"
                            }
                        ],
                        "id": 3729,
                        "name": "VariableDeclaration",
                        "src": "1285:51:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "pools",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => address))",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => address))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3730,
                                        "name": "ElementaryTypeName",
                                        "src": "1421:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => address)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 3731,
                                                "name": "ElementaryTypeName",
                                                "src": "1440:7:16"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3732,
                                                "name": "ElementaryTypeName",
                                                "src": "1451:7:16"
                                            }
                                        ],
                                        "id": 3733,
                                        "name": "Mapping",
                                        "src": "1432:27:16"
                                    }
                                ],
                                "id": 3734,
                                "name": "Mapping",
                                "src": "1413:47:16"
                            }
                        ],
                        "id": 3735,
                        "name": "VariableDeclaration",
                        "src": "1413:61:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "poolSecurity",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => bytes32)",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => bytes32)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3736,
                                        "name": "ElementaryTypeName",
                                        "src": "1539:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "name": "bytes32",
                                            "type": "bytes32"
                                        },
                                        "id": 3737,
                                        "name": "ElementaryTypeName",
                                        "src": "1550:7:16"
                                    }
                                ],
                                "id": 3738,
                                "name": "Mapping",
                                "src": "1531:27:16"
                            }
                        ],
                        "id": 3739,
                        "name": "VariableDeclaration",
                        "src": "1531:48:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "issuer",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(bytes32 => address)",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(bytes32 => address)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "bytes32",
                                            "type": "bytes32"
                                        },
                                        "id": 3740,
                                        "name": "ElementaryTypeName",
                                        "src": "1629:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "stateMutability": "nonpayable",
                                            "type": "address"
                                        },
                                        "id": 3741,
                                        "name": "ElementaryTypeName",
                                        "src": "1640:7:16"
                                    }
                                ],
                                "id": 3742,
                                "name": "Mapping",
                                "src": "1621:27:16"
                            }
                        ],
                        "id": 3743,
                        "name": "VariableDeclaration",
                        "src": "1621:42:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "fees",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => uint256)",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => uint256)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3744,
                                        "name": "ElementaryTypeName",
                                        "src": "1734:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 3745,
                                        "name": "ElementaryTypeName",
                                        "src": "1745:7:16"
                                    }
                                ],
                                "id": 3746,
                                "name": "Mapping",
                                "src": "1726:27:16"
                            }
                        ],
                        "id": 3747,
                        "name": "VariableDeclaration",
                        "src": "1726:40:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_bridge",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 3748,
                                "name": "ElementaryTypeName",
                                "src": "1790:7:16"
                            }
                        ],
                        "id": 3749,
                        "name": "VariableDeclaration",
                        "src": "1790:23:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "collateralBalance",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => int256))",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => int256))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3750,
                                        "name": "ElementaryTypeName",
                                        "src": "1958:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => int256)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 3751,
                                                "name": "ElementaryTypeName",
                                                "src": "1977:7:16"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 3752,
                                                "name": "ElementaryTypeName",
                                                "src": "1988:6:16"
                                            }
                                        ],
                                        "id": 3753,
                                        "name": "Mapping",
                                        "src": "1969:26:16"
                                    }
                                ],
                                "id": 3754,
                                "name": "Mapping",
                                "src": "1950:46:16"
                            }
                        ],
                        "id": 3755,
                        "name": "VariableDeclaration",
                        "src": "1950:72:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "collateralAmount",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(bytes32 => mapping(address => uint256))",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(bytes32 => mapping(address => uint256))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "bytes32",
                                            "type": "bytes32"
                                        },
                                        "id": 3756,
                                        "name": "ElementaryTypeName",
                                        "src": "2097:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 3757,
                                                "name": "ElementaryTypeName",
                                                "src": "2116:7:16"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3758,
                                                "name": "ElementaryTypeName",
                                                "src": "2127:7:16"
                                            }
                                        ],
                                        "id": 3759,
                                        "name": "Mapping",
                                        "src": "2108:27:16"
                                    }
                                ],
                                "id": 3760,
                                "name": "Mapping",
                                "src": "2089:47:16"
                            }
                        ],
                        "id": 3761,
                        "name": "VariableDeclaration",
                        "src": "2089:72:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "traders",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address[]",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "address[]"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "stateMutability": "nonpayable",
                                            "type": "address"
                                        },
                                        "id": 3762,
                                        "name": "ElementaryTypeName",
                                        "src": "2185:7:16"
                                    }
                                ],
                                "id": 3763,
                                "name": "ArrayTypeName",
                                "src": "2185:9:16"
                            }
                        ],
                        "id": 3764,
                        "name": "VariableDeclaration",
                        "src": "2185:25:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "traderIndex",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => uint256)",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => uint256)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3765,
                                        "name": "ElementaryTypeName",
                                        "src": "2225:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 3766,
                                        "name": "ElementaryTypeName",
                                        "src": "2236:7:16"
                                    }
                                ],
                                "id": 3767,
                                "name": "Mapping",
                                "src": "2217:27:16"
                            }
                        ],
                        "id": 3768,
                        "name": "VariableDeclaration",
                        "src": "2217:47:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "positions",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition[]))",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition[]))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3769,
                                        "name": "ElementaryTypeName",
                                        "src": "2359:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => struct IMarginManager.tradePosition[])"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 3770,
                                                "name": "ElementaryTypeName",
                                                "src": "2378:7:16"
                                            },
                                            {
                                                "attributes": {
                                                    "type": "struct IMarginManager.tradePosition[]"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IMarginManager.tradePosition",
                                                            "referencedDeclaration": 11372,
                                                            "type": "struct IMarginManager.tradePosition"
                                                        },
                                                        "id": 3771,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2389:28:16"
                                                    }
                                                ],
                                                "id": 3772,
                                                "name": "ArrayTypeName",
                                                "src": "2389:30:16"
                                            }
                                        ],
                                        "id": 3773,
                                        "name": "Mapping",
                                        "src": "2370:50:16"
                                    }
                                ],
                                "id": 3774,
                                "name": "Mapping",
                                "src": "2351:70:16"
                            }
                        ],
                        "id": 3775,
                        "name": "VariableDeclaration",
                        "src": "2351:88:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "positionBalance",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => mapping(address => uint256))",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => mapping(address => uint256))"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3776,
                                        "name": "ElementaryTypeName",
                                        "src": "2548:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "type": "mapping(address => uint256)"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "type": "address"
                                                },
                                                "id": 3777,
                                                "name": "ElementaryTypeName",
                                                "src": "2567:7:16"
                                            },
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3778,
                                                "name": "ElementaryTypeName",
                                                "src": "2578:7:16"
                                            }
                                        ],
                                        "id": 3779,
                                        "name": "Mapping",
                                        "src": "2559:27:16"
                                    }
                                ],
                                "id": 3780,
                                "name": "Mapping",
                                "src": "2540:47:16"
                            }
                        ],
                        "id": 3781,
                        "name": "VariableDeclaration",
                        "src": "2540:71:16"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "orders",
                            "scope": 6363,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(bytes32 => uint256)",
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(bytes32 => uint256)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "bytes32",
                                            "type": "bytes32"
                                        },
                                        "id": 3782,
                                        "name": "ElementaryTypeName",
                                        "src": "2697:7:16"
                                    },
                                    {
                                        "attributes": {
                                            "name": "uint256",
                                            "type": "uint256"
                                        },
                                        "id": 3783,
                                        "name": "ElementaryTypeName",
                                        "src": "2708:7:16"
                                    }
                                ],
                                "id": 3784,
                                "name": "Mapping",
                                "src": "2689:27:16"
                            }
                        ],
                        "id": 3785,
                        "name": "VariableDeclaration",
                        "src": "2689:42:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "tradeSettled"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "poolid",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3786,
                                                "name": "ElementaryTypeName",
                                                "src": "2786:7:16"
                                            }
                                        ],
                                        "id": 3787,
                                        "name": "VariableDeclaration",
                                        "src": "2786:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "transferor",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3788,
                                                "name": "ElementaryTypeName",
                                                "src": "2835:7:16"
                                            }
                                        ],
                                        "id": 3789,
                                        "name": "VariableDeclaration",
                                        "src": "2835:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "transferee",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3790,
                                                "name": "ElementaryTypeName",
                                                "src": "2880:7:16"
                                            }
                                        ],
                                        "id": 3791,
                                        "name": "VariableDeclaration",
                                        "src": "2880:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "unitsToTransfer",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3792,
                                                "name": "ElementaryTypeName",
                                                "src": "2925:7:16"
                                            }
                                        ],
                                        "id": 3793,
                                        "name": "VariableDeclaration",
                                        "src": "2925:23:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3794,
                                                "name": "ElementaryTypeName",
                                                "src": "2975:7:16"
                                            }
                                        ],
                                        "id": 3795,
                                        "name": "VariableDeclaration",
                                        "src": "2975:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3796,
                                                "name": "ElementaryTypeName",
                                                "src": "3018:7:16"
                                            }
                                        ],
                                        "id": 3797,
                                        "name": "VariableDeclaration",
                                        "src": "3018:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "amountPaid",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3798,
                                                "name": "ElementaryTypeName",
                                                "src": "3085:7:16"
                                            }
                                        ],
                                        "id": 3799,
                                        "name": "VariableDeclaration",
                                        "src": "3085:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "cref",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3800,
                                                "name": "ElementaryTypeName",
                                                "src": "3130:7:16"
                                            }
                                        ],
                                        "id": 3801,
                                        "name": "VariableDeclaration",
                                        "src": "3130:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "ref",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3802,
                                                "name": "ElementaryTypeName",
                                                "src": "3169:7:16"
                                            }
                                        ],
                                        "id": 3803,
                                        "name": "VariableDeclaration",
                                        "src": "3169:11:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "fee",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3804,
                                                "name": "ElementaryTypeName",
                                                "src": "3207:7:16"
                                            }
                                        ],
                                        "id": 3805,
                                        "name": "VariableDeclaration",
                                        "src": "3207:11:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 3809,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3806,
                                                "name": "ElementaryTypeName",
                                                "src": "3245:7:16"
                                            }
                                        ],
                                        "id": 3807,
                                        "name": "VariableDeclaration",
                                        "src": "3245:17:16"
                                    }
                                ],
                                "id": 3808,
                                "name": "ParameterList",
                                "src": "2758:527:16"
                            }
                        ],
                        "id": 3809,
                        "name": "EventDefinition",
                        "src": "2740:546:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "subscribers"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "party",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3810,
                                                "name": "ElementaryTypeName",
                                                "src": "3312:7:16"
                                            }
                                        ],
                                        "id": 3811,
                                        "name": "VariableDeclaration",
                                        "src": "3312:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "counterparty",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3812,
                                                "name": "ElementaryTypeName",
                                                "src": "3327:7:16"
                                            }
                                        ],
                                        "id": 3813,
                                        "name": "VariableDeclaration",
                                        "src": "3327:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "securityTraded",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3814,
                                                "name": "ElementaryTypeName",
                                                "src": "3349:7:16"
                                            }
                                        ],
                                        "id": 3815,
                                        "name": "VariableDeclaration",
                                        "src": "3349:30:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "securityAmount",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3816,
                                                "name": "ElementaryTypeName",
                                                "src": "3381:7:16"
                                            }
                                        ],
                                        "id": 3817,
                                        "name": "VariableDeclaration",
                                        "src": "3381:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "currencySettled",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3818,
                                                "name": "ElementaryTypeName",
                                                "src": "3431:7:16"
                                            }
                                        ],
                                        "id": 3819,
                                        "name": "VariableDeclaration",
                                        "src": "3431:23:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "cashAmount",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3820,
                                                "name": "ElementaryTypeName",
                                                "src": "3456:7:16"
                                            }
                                        ],
                                        "id": 3821,
                                        "name": "VariableDeclaration",
                                        "src": "3456:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "orderRef",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3822,
                                                "name": "ElementaryTypeName",
                                                "src": "3476:7:16"
                                            }
                                        ],
                                        "id": 3823,
                                        "name": "VariableDeclaration",
                                        "src": "3476:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 3827,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3824,
                                                "name": "ElementaryTypeName",
                                                "src": "3494:7:16"
                                            }
                                        ],
                                        "id": 3825,
                                        "name": "VariableDeclaration",
                                        "src": "3494:17:16"
                                    }
                                ],
                                "id": 3826,
                                "name": "ParameterList",
                                "src": "3311:201:16"
                            }
                        ],
                        "id": 3827,
                        "name": "EventDefinition",
                        "src": "3294:219:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "closures"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "scope": 3835,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3828,
                                                "name": "ElementaryTypeName",
                                                "src": "3536:7:16"
                                            }
                                        ],
                                        "id": 3829,
                                        "name": "VariableDeclaration",
                                        "src": "3536:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 3835,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3830,
                                                "name": "ElementaryTypeName",
                                                "src": "3560:7:16"
                                            }
                                        ],
                                        "id": 3831,
                                        "name": "VariableDeclaration",
                                        "src": "3560:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 3835,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3832,
                                                "name": "ElementaryTypeName",
                                                "src": "3578:7:16"
                                            }
                                        ],
                                        "id": 3833,
                                        "name": "VariableDeclaration",
                                        "src": "3578:17:16"
                                    }
                                ],
                                "id": 3834,
                                "name": "ParameterList",
                                "src": "3535:61:16"
                            }
                        ],
                        "id": 3835,
                        "name": "EventDefinition",
                        "src": "3521:76:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "feecollection"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "platform",
                                            "scope": 3843,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3836,
                                                "name": "ElementaryTypeName",
                                                "src": "3623:7:16"
                                            }
                                        ],
                                        "id": 3837,
                                        "name": "VariableDeclaration",
                                        "src": "3623:24:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "collection",
                                            "scope": 3843,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3838,
                                                "name": "ElementaryTypeName",
                                                "src": "3649:7:16"
                                            }
                                        ],
                                        "id": 3839,
                                        "name": "VariableDeclaration",
                                        "src": "3649:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 3843,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3840,
                                                "name": "ElementaryTypeName",
                                                "src": "3669:7:16"
                                            }
                                        ],
                                        "id": 3841,
                                        "name": "VariableDeclaration",
                                        "src": "3669:17:16"
                                    }
                                ],
                                "id": 3842,
                                "name": "ParameterList",
                                "src": "3622:65:16"
                            }
                        ],
                        "id": 3843,
                        "name": "EventDefinition",
                        "src": "3603:85:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "collateral"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "action",
                                            "scope": 3855,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3844,
                                                "name": "ElementaryTypeName",
                                                "src": "3713:7:16"
                                            }
                                        ],
                                        "id": 3845,
                                        "name": "VariableDeclaration",
                                        "src": "3713:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "scope": 3855,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3846,
                                                "name": "ElementaryTypeName",
                                                "src": "3729:7:16"
                                            }
                                        ],
                                        "id": 3847,
                                        "name": "VariableDeclaration",
                                        "src": "3729:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 3855,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3848,
                                                "name": "ElementaryTypeName",
                                                "src": "3751:7:16"
                                            }
                                        ],
                                        "id": 3849,
                                        "name": "VariableDeclaration",
                                        "src": "3751:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "balance",
                                            "scope": 3855,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 3850,
                                                "name": "ElementaryTypeName",
                                                "src": "3769:6:16"
                                            }
                                        ],
                                        "id": 3851,
                                        "name": "VariableDeclaration",
                                        "src": "3769:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "offerTime",
                                            "scope": 3855,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3852,
                                                "name": "ElementaryTypeName",
                                                "src": "3785:7:16"
                                            }
                                        ],
                                        "id": 3853,
                                        "name": "VariableDeclaration",
                                        "src": "3785:17:16"
                                    }
                                ],
                                "id": 3854,
                                "name": "ParameterList",
                                "src": "3712:91:16"
                            }
                        ],
                        "id": 3855,
                        "name": "EventDefinition",
                        "src": "3696:108:16"
                    },
                    {
                        "attributes": {
                            "anonymous": false,
                            "name": "PnLSettled"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": true,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3856,
                                                "name": "ElementaryTypeName",
                                                "src": "3827:7:16"
                                            }
                                        ],
                                        "id": 3857,
                                        "name": "VariableDeclaration",
                                        "src": "3827:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3858,
                                                "name": "ElementaryTypeName",
                                                "src": "3849:7:16"
                                            }
                                        ],
                                        "id": 3859,
                                        "name": "VariableDeclaration",
                                        "src": "3849:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3860,
                                                "name": "ElementaryTypeName",
                                                "src": "3867:7:16"
                                            }
                                        ],
                                        "id": 3861,
                                        "name": "VariableDeclaration",
                                        "src": "3867:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "financing",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 3862,
                                                "name": "ElementaryTypeName",
                                                "src": "3885:6:16"
                                            }
                                        ],
                                        "id": 3863,
                                        "name": "VariableDeclaration",
                                        "src": "3885:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "dividend",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 3864,
                                                "name": "ElementaryTypeName",
                                                "src": "3903:6:16"
                                            }
                                        ],
                                        "id": 3865,
                                        "name": "VariableDeclaration",
                                        "src": "3903:15:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "commission",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 3866,
                                                "name": "ElementaryTypeName",
                                                "src": "3920:6:16"
                                            }
                                        ],
                                        "id": 3867,
                                        "name": "VariableDeclaration",
                                        "src": "3920:17:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "indexed": false,
                                            "mutability": "mutable",
                                            "name": "settlementTime",
                                            "scope": 3871,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3868,
                                                "name": "ElementaryTypeName",
                                                "src": "3939:7:16"
                                            }
                                        ],
                                        "id": 3869,
                                        "name": "VariableDeclaration",
                                        "src": "3939:22:16"
                                    }
                                ],
                                "id": 3870,
                                "name": "ParameterList",
                                "src": "3826:136:16"
                            }
                        ],
                        "id": 3871,
                        "name": "EventDefinition",
                        "src": "3810:153:16"
                    },
                    {
                        "attributes": {
                            "name": "onlyIssueManager",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "sender",
                                            "scope": 3893,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3872,
                                                "name": "ElementaryTypeName",
                                                "src": "3997:7:16"
                                            }
                                        ],
                                        "id": 3873,
                                        "name": "VariableDeclaration",
                                        "src": "3997:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 3893,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3874,
                                                "name": "ElementaryTypeName",
                                                "src": "4013:7:16"
                                            }
                                        ],
                                        "id": 3875,
                                        "name": "VariableDeclaration",
                                        "src": "4013:16:16"
                                    }
                                ],
                                "id": 3876,
                                "name": "ParameterList",
                                "src": "3996:34:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                3878
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "DP",
                                                    "scope": 3892,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "address",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "address",
                                                            "stateMutability": "nonpayable",
                                                            "type": "address"
                                                        },
                                                        "id": 3877,
                                                        "name": "ElementaryTypeName",
                                                        "src": "4041:7:16"
                                                    }
                                                ],
                                                "id": 3878,
                                                "name": "VariableDeclaration",
                                                "src": "4041:10:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "address",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getDP",
                                                            "referencedDeclaration": 11152,
                                                            "type": "function (address) view external returns (address)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3718,
                                                                    "type": "contract IFactory",
                                                                    "value": "_securityFactory"
                                                                },
                                                                "id": 3879,
                                                                "name": "Identifier",
                                                                "src": "4054:16:16"
                                                            }
                                                        ],
                                                        "id": 3880,
                                                        "name": "MemberAccess",
                                                        "src": "4054:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3875,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 3881,
                                                        "name": "Identifier",
                                                        "src": "4077:8:16"
                                                    }
                                                ],
                                                "id": 3882,
                                                "name": "FunctionCall",
                                                "src": "4054:32:16"
                                            }
                                        ],
                                        "id": 3883,
                                        "name": "VariableDeclarationStatement",
                                        "src": "4041:45:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                                    "typeString": "literal_string \"Unauthorized access\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 3884,
                                                        "name": "Identifier",
                                                        "src": "4097:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3878,
                                                                    "type": "address",
                                                                    "value": "DP"
                                                                },
                                                                "id": 3885,
                                                                "name": "Identifier",
                                                                "src": "4105:2:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3873,
                                                                    "type": "address",
                                                                    "value": "sender"
                                                                },
                                                                "id": 3886,
                                                                "name": "Identifier",
                                                                "src": "4109:6:16"
                                                            }
                                                        ],
                                                        "id": 3887,
                                                        "name": "BinaryOperation",
                                                        "src": "4105:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "556e617574686f72697a656420616363657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Unauthorized access\"",
                                                            "value": "Unauthorized access"
                                                        },
                                                        "id": 3888,
                                                        "name": "Literal",
                                                        "src": "4117:21:16"
                                                    }
                                                ],
                                                "id": 3889,
                                                "name": "FunctionCall",
                                                "src": "4097:42:16"
                                            }
                                        ],
                                        "id": 3890,
                                        "name": "ExpressionStatement",
                                        "src": "4097:42:16"
                                    },
                                    {
                                        "id": 3891,
                                        "name": "PlaceholderStatement",
                                        "src": "4150:1:16"
                                    }
                                ],
                                "id": 3892,
                                "name": "Block",
                                "src": "4030:129:16"
                            }
                        ],
                        "id": 3893,
                        "name": "ModifierDefinition",
                        "src": "3971:188:16"
                    },
                    {
                        "attributes": {
                            "name": "onlyTrader",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "sender",
                                            "scope": 3908,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3894,
                                                "name": "ElementaryTypeName",
                                                "src": "4187:7:16"
                                            }
                                        ],
                                        "id": 3895,
                                        "name": "VariableDeclaration",
                                        "src": "4187:14:16"
                                    }
                                ],
                                "id": 3896,
                                "name": "ParameterList",
                                "src": "4186:16:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_b89edf027d3d1129b9f2c8dcd2ba89ffc6487f04ca050032214e13175a19a74a",
                                                                    "typeString": "literal_string \"Unauthorized access\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 3897,
                                                        "name": "Identifier",
                                                        "src": "4213:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3768,
                                                                            "type": "mapping(address => uint256)",
                                                                            "value": "traderIndex"
                                                                        },
                                                                        "id": 3898,
                                                                        "name": "Identifier",
                                                                        "src": "4221:11:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3895,
                                                                            "type": "address",
                                                                            "value": "sender"
                                                                        },
                                                                        "id": 3899,
                                                                        "name": "Identifier",
                                                                        "src": "4233:6:16"
                                                                    }
                                                                ],
                                                                "id": 3900,
                                                                "name": "IndexAccess",
                                                                "src": "4221:19:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 3901,
                                                                "name": "Literal",
                                                                "src": "4242:1:16"
                                                            }
                                                        ],
                                                        "id": 3902,
                                                        "name": "BinaryOperation",
                                                        "src": "4221:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "556e617574686f72697a656420616363657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Unauthorized access\"",
                                                            "value": "Unauthorized access"
                                                        },
                                                        "id": 3903,
                                                        "name": "Literal",
                                                        "src": "4245:21:16"
                                                    }
                                                ],
                                                "id": 3904,
                                                "name": "FunctionCall",
                                                "src": "4213:54:16"
                                            }
                                        ],
                                        "id": 3905,
                                        "name": "ExpressionStatement",
                                        "src": "4213:54:16"
                                    },
                                    {
                                        "id": 3906,
                                        "name": "PlaceholderStatement",
                                        "src": "4278:1:16"
                                    }
                                ],
                                "id": 3907,
                                "name": "Block",
                                "src": "4202:85:16"
                            }
                        ],
                        "id": 3908,
                        "name": "ModifierDefinition",
                        "src": "4167:120:16"
                    },
                    {
                        "attributes": {
                            "name": "onlyBridge",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "sender",
                                            "scope": 3921,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3909,
                                                "name": "ElementaryTypeName",
                                                "src": "4315:7:16"
                                            }
                                        ],
                                        "id": 3910,
                                        "name": "VariableDeclaration",
                                        "src": "4315:14:16"
                                    }
                                ],
                                "id": 3911,
                                "name": "ParameterList",
                                "src": "4314:16:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_7d6f01825081424caae652b6c8834768bc58048c5cfbd312e37caed9eeb57cbd",
                                                                    "typeString": "literal_string \"Only Bridge access\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 3912,
                                                        "name": "Identifier",
                                                        "src": "4341:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3910,
                                                                    "type": "address",
                                                                    "value": "sender"
                                                                },
                                                                "id": 3913,
                                                                "name": "Identifier",
                                                                "src": "4349:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3749,
                                                                    "type": "address",
                                                                    "value": "_bridge"
                                                                },
                                                                "id": 3914,
                                                                "name": "Identifier",
                                                                "src": "4357:7:16"
                                                            }
                                                        ],
                                                        "id": 3915,
                                                        "name": "BinaryOperation",
                                                        "src": "4349:15:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4f6e6c792042726964676520616363657373",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Only Bridge access\"",
                                                            "value": "Only Bridge access"
                                                        },
                                                        "id": 3916,
                                                        "name": "Literal",
                                                        "src": "4366:20:16"
                                                    }
                                                ],
                                                "id": 3917,
                                                "name": "FunctionCall",
                                                "src": "4341:46:16"
                                            }
                                        ],
                                        "id": 3918,
                                        "name": "ExpressionStatement",
                                        "src": "4341:46:16"
                                    },
                                    {
                                        "id": 3919,
                                        "name": "PlaceholderStatement",
                                        "src": "4398:1:16"
                                    }
                                ],
                                "id": 3920,
                                "name": "Block",
                                "src": "4330:77:16"
                            }
                        ],
                        "id": 3921,
                        "name": "ModifierDefinition",
                        "src": "4295:112:16"
                    },
                    {
                        "attributes": {
                            "functionSelector": "f8c8765e",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "initialize",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolFactory",
                                            "scope": 3958,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3922,
                                                "name": "ElementaryTypeName",
                                                "src": "4436:7:16"
                                            }
                                        ],
                                        "id": 3923,
                                        "name": "VariableDeclaration",
                                        "src": "4436:19:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "vault",
                                            "scope": 3958,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3924,
                                                "name": "ElementaryTypeName",
                                                "src": "4457:7:16"
                                            }
                                        ],
                                        "id": 3925,
                                        "name": "VariableDeclaration",
                                        "src": "4457:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityFactory",
                                            "scope": 3958,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3926,
                                                "name": "ElementaryTypeName",
                                                "src": "4472:7:16"
                                            }
                                        ],
                                        "id": 3927,
                                        "name": "VariableDeclaration",
                                        "src": "4472:23:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "distribution",
                                            "scope": 3958,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3928,
                                                "name": "ElementaryTypeName",
                                                "src": "4497:7:16"
                                            }
                                        ],
                                        "id": 3929,
                                        "name": "VariableDeclaration",
                                        "src": "4497:20:16"
                                    }
                                ],
                                "id": 3930,
                                "name": "ParameterList",
                                "src": "4435:83:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3933,
                                "name": "ParameterList",
                                "src": "4536:0:16"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 2993,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 3931,
                                        "name": "Identifier",
                                        "src": "4526:9:16"
                                    }
                                ],
                                "id": 3932,
                                "name": "ModifierInvocation",
                                "src": "4526:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3712,
                                                            "type": "address",
                                                            "value": "_poolFactory"
                                                        },
                                                        "id": 3934,
                                                        "name": "Identifier",
                                                        "src": "4547:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3923,
                                                            "type": "address",
                                                            "value": "poolFactory"
                                                        },
                                                        "id": 3935,
                                                        "name": "Identifier",
                                                        "src": "4562:11:16"
                                                    }
                                                ],
                                                "id": 3936,
                                                "name": "Assignment",
                                                "src": "4547:26:16"
                                            }
                                        ],
                                        "id": 3937,
                                        "name": "ExpressionStatement",
                                        "src": "4547:26:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3714,
                                                            "type": "address",
                                                            "value": "_vault"
                                                        },
                                                        "id": 3938,
                                                        "name": "Identifier",
                                                        "src": "4584:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3925,
                                                            "type": "address",
                                                            "value": "vault"
                                                        },
                                                        "id": 3939,
                                                        "name": "Identifier",
                                                        "src": "4593:5:16"
                                                    }
                                                ],
                                                "id": 3940,
                                                "name": "Assignment",
                                                "src": "4584:14:16"
                                            }
                                        ],
                                        "id": 3941,
                                        "name": "ExpressionStatement",
                                        "src": "4584:14:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "contract IFactory"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3718,
                                                            "type": "contract IFactory",
                                                            "value": "_securityFactory"
                                                        },
                                                        "id": 3942,
                                                        "name": "Identifier",
                                                        "src": "4609:16:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "contract IFactory",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 11153,
                                                                    "type": "type(contract IFactory)",
                                                                    "value": "IFactory"
                                                                },
                                                                "id": 3943,
                                                                "name": "Identifier",
                                                                "src": "4628:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3927,
                                                                    "type": "address",
                                                                    "value": "securityFactory"
                                                                },
                                                                "id": 3944,
                                                                "name": "Identifier",
                                                                "src": "4637:15:16"
                                                            }
                                                        ],
                                                        "id": 3945,
                                                        "name": "FunctionCall",
                                                        "src": "4628:25:16"
                                                    }
                                                ],
                                                "id": 3946,
                                                "name": "Assignment",
                                                "src": "4609:44:16"
                                            }
                                        ],
                                        "id": 3947,
                                        "name": "ExpressionStatement",
                                        "src": "4609:44:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3716,
                                                            "type": "address",
                                                            "value": "_distribution"
                                                        },
                                                        "id": 3948,
                                                        "name": "Identifier",
                                                        "src": "4664:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3929,
                                                            "type": "address",
                                                            "value": "distribution"
                                                        },
                                                        "id": 3949,
                                                        "name": "Identifier",
                                                        "src": "4680:12:16"
                                                    }
                                                ],
                                                "id": 3950,
                                                "name": "Assignment",
                                                "src": "4664:28:16"
                                            }
                                        ],
                                        "id": 3951,
                                        "name": "ExpressionStatement",
                                        "src": "4664:28:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3749,
                                                            "type": "address",
                                                            "value": "_bridge"
                                                        },
                                                        "id": 3952,
                                                        "name": "Identifier",
                                                        "src": "4703:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 3953,
                                                                "name": "Identifier",
                                                                "src": "4713:3:16"
                                                            }
                                                        ],
                                                        "id": 3954,
                                                        "name": "MemberAccess",
                                                        "src": "4713:10:16"
                                                    }
                                                ],
                                                "id": 3955,
                                                "name": "Assignment",
                                                "src": "4703:20:16"
                                            }
                                        ],
                                        "id": 3956,
                                        "name": "ExpressionStatement",
                                        "src": "4703:20:16"
                                    }
                                ],
                                "id": 3957,
                                "name": "Block",
                                "src": "4536:195:16"
                            }
                        ],
                        "id": 3958,
                        "name": "FunctionDefinition",
                        "src": "4416:315:16"
                    },
                    {
                        "attributes": {
                            "functionSelector": "8dd14802",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "setBridge",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "bridge",
                                            "scope": 3970,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3959,
                                                "name": "ElementaryTypeName",
                                                "src": "4758:7:16"
                                            }
                                        ],
                                        "id": 3960,
                                        "name": "VariableDeclaration",
                                        "src": "4758:14:16"
                                    }
                                ],
                                "id": 3961,
                                "name": "ParameterList",
                                "src": "4757:16:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3964,
                                "name": "ParameterList",
                                "src": "4791:0:16"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 2993,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 3962,
                                        "name": "Identifier",
                                        "src": "4781:9:16"
                                    }
                                ],
                                "id": 3963,
                                "name": "ModifierInvocation",
                                "src": "4781:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3749,
                                                            "type": "address",
                                                            "value": "_bridge"
                                                        },
                                                        "id": 3965,
                                                        "name": "Identifier",
                                                        "src": "4802:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3960,
                                                            "type": "address",
                                                            "value": "bridge"
                                                        },
                                                        "id": 3966,
                                                        "name": "Identifier",
                                                        "src": "4812:6:16"
                                                    }
                                                ],
                                                "id": 3967,
                                                "name": "Assignment",
                                                "src": "4802:16:16"
                                            }
                                        ],
                                        "id": 3968,
                                        "name": "ExpressionStatement",
                                        "src": "4802:16:16"
                                    }
                                ],
                                "id": 3969,
                                "name": "Block",
                                "src": "4791:35:16"
                            }
                        ],
                        "id": 3970,
                        "name": "FunctionDefinition",
                        "src": "4739:87:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11516
                            ],
                            "functionSelector": "f6c00927",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getPool",
                            "scope": 6363,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3974,
                                "name": "OverrideSpecifier",
                                "src": "4876:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "scope": 3992,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3971,
                                                "name": "ElementaryTypeName",
                                                "src": "4851:7:16"
                                            }
                                        ],
                                        "id": 3972,
                                        "name": "VariableDeclaration",
                                        "src": "4851:14:16"
                                    }
                                ],
                                "id": 3973,
                                "name": "ParameterList",
                                "src": "4850:16:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3992,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 3975,
                                                "name": "ElementaryTypeName",
                                                "src": "4898:4:16"
                                            }
                                        ],
                                        "id": 3976,
                                        "name": "VariableDeclaration",
                                        "src": "4898:4:16"
                                    }
                                ],
                                "id": 3977,
                                "name": "ParameterList",
                                "src": "4897:6:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3743,
                                                                    "type": "mapping(bytes32 => address)",
                                                                    "value": "issuer"
                                                                },
                                                                "id": 3978,
                                                                "name": "Identifier",
                                                                "src": "4917:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3972,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 3979,
                                                                "name": "Identifier",
                                                                "src": "4924:6:16"
                                                            }
                                                        ],
                                                        "id": 3980,
                                                        "name": "IndexAccess",
                                                        "src": "4917:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 3981,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "4933:7:16"
                                                                    }
                                                                ],
                                                                "id": 3982,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "4933:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "307830",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0x0"
                                                                },
                                                                "id": 3983,
                                                                "name": "Literal",
                                                                "src": "4941:3:16"
                                                            }
                                                        ],
                                                        "id": 3984,
                                                        "name": "FunctionCall",
                                                        "src": "4933:12:16"
                                                    }
                                                ],
                                                "id": 3985,
                                                "name": "BinaryOperation",
                                                "src": "4917:28:16"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 3977
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "66616c7365",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "false"
                                                        },
                                                        "id": 3986,
                                                        "name": "Literal",
                                                        "src": "4968:5:16"
                                                    }
                                                ],
                                                "id": 3987,
                                                "name": "Return",
                                                "src": "4961:12:16"
                                            },
                                            {
                                                "attributes": {
                                                    "functionReturnParameters": 3977
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "74727565",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "true"
                                                        },
                                                        "id": 3988,
                                                        "name": "Literal",
                                                        "src": "5009:4:16"
                                                    }
                                                ],
                                                "id": 3989,
                                                "name": "Return",
                                                "src": "5002:11:16"
                                            }
                                        ],
                                        "id": 3990,
                                        "name": "IfStatement",
                                        "src": "4914:99:16"
                                    }
                                ],
                                "id": 3991,
                                "name": "Block",
                                "src": "4903:118:16"
                            }
                        ],
                        "id": 3992,
                        "name": "FunctionDefinition",
                        "src": "4834:187:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11395
                            ],
                            "functionSelector": "541af9d8",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "issueProduct",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4014,
                                "name": "OverrideSpecifier",
                                "src": "5287:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3993,
                                                "name": "ElementaryTypeName",
                                                "src": "5051:7:16"
                                            }
                                        ],
                                        "id": 3994,
                                        "name": "VariableDeclaration",
                                        "src": "5051:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityType",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3995,
                                                "name": "ElementaryTypeName",
                                                "src": "5069:7:16"
                                            }
                                        ],
                                        "id": 3996,
                                        "name": "VariableDeclaration",
                                        "src": "5069:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3997,
                                                "name": "ElementaryTypeName",
                                                "src": "5091:7:16"
                                            }
                                        ],
                                        "id": 3998,
                                        "name": "VariableDeclaration",
                                        "src": "5091:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cficode",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 3999,
                                                "name": "ElementaryTypeName",
                                                "src": "5109:7:16"
                                            }
                                        ],
                                        "id": 4000,
                                        "name": "VariableDeclaration",
                                        "src": "5109:15:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityAmount",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4001,
                                                "name": "ElementaryTypeName",
                                                "src": "5126:7:16"
                                            }
                                        ],
                                        "id": 4002,
                                        "name": "VariableDeclaration",
                                        "src": "5126:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "minimumOrderSize",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4003,
                                                "name": "ElementaryTypeName",
                                                "src": "5150:7:16"
                                            }
                                        ],
                                        "id": 4004,
                                        "name": "VariableDeclaration",
                                        "src": "5150:24:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashAmount",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4005,
                                                "name": "ElementaryTypeName",
                                                "src": "5176:7:16"
                                            }
                                        ],
                                        "id": 4006,
                                        "name": "VariableDeclaration",
                                        "src": "5176:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "margin",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4007,
                                                "name": "ElementaryTypeName",
                                                "src": "5229:7:16"
                                            }
                                        ],
                                        "id": 4008,
                                        "name": "VariableDeclaration",
                                        "src": "5229:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "collateralAmnt",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4009,
                                                "name": "ElementaryTypeName",
                                                "src": "5245:7:16"
                                            }
                                        ],
                                        "id": 4010,
                                        "name": "VariableDeclaration",
                                        "src": "5245:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tradeFee",
                                            "scope": 4107,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4011,
                                                "name": "ElementaryTypeName",
                                                "src": "5269:7:16"
                                            }
                                        ],
                                        "id": 4012,
                                        "name": "VariableDeclaration",
                                        "src": "5269:16:16"
                                    }
                                ],
                                "id": 4013,
                                "name": "ParameterList",
                                "src": "5050:236:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4020,
                                "name": "ParameterList",
                                "src": "5344:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3893,
                                            "type": "modifier (address,address)",
                                            "value": "onlyIssueManager"
                                        },
                                        "id": 4015,
                                        "name": "Identifier",
                                        "src": "5305:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 4016,
                                                "name": "Identifier",
                                                "src": "5322:3:16"
                                            }
                                        ],
                                        "id": 4017,
                                        "name": "MemberAccess",
                                        "src": "5322:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3994,
                                            "type": "address",
                                            "value": "security"
                                        },
                                        "id": 4018,
                                        "name": "Identifier",
                                        "src": "5334:8:16"
                                    }
                                ],
                                "id": 4019,
                                "name": "ModifierInvocation",
                                "src": "5305:38:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_d05be564bd54ad6151c2e50eb2ac86d2647726f6cf824747fecbebc8bc5730bc",
                                                                    "typeString": "literal_string \"No balance to create pool\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 4021,
                                                        "name": "Identifier",
                                                        "src": "5355:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "&&",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": ">=",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address_payable",
                                                                                            "typeString": "address payable"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "balanceOf",
                                                                                    "referencedDeclaration": 2877,
                                                                                    "type": "function (address) view external returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IERC20",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 2938,
                                                                                                    "type": "type(contract IERC20)",
                                                                                                    "value": "IERC20"
                                                                                                },
                                                                                                "id": 4022,
                                                                                                "name": "Identifier",
                                                                                                "src": "5363:6:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3994,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 4023,
                                                                                                "name": "Identifier",
                                                                                                "src": "5370:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4024,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "5363:16:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4025,
                                                                                "name": "MemberAccess",
                                                                                "src": "5363:26:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 4026,
                                                                                        "name": "Identifier",
                                                                                        "src": "5390:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4027,
                                                                                "name": "MemberAccess",
                                                                                "src": "5390:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 4028,
                                                                        "name": "FunctionCall",
                                                                        "src": "5363:38:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4002,
                                                                            "type": "uint256",
                                                                            "value": "securityAmount"
                                                                        },
                                                                        "id": 4029,
                                                                        "name": "Identifier",
                                                                        "src": "5403:14:16"
                                                                    }
                                                                ],
                                                                "id": 4030,
                                                                "name": "BinaryOperation",
                                                                "src": "5363:54:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": ">=",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address_payable",
                                                                                            "typeString": "address payable"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "balanceOf",
                                                                                    "referencedDeclaration": 2877,
                                                                                    "type": "function (address) view external returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IERC20",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 2938,
                                                                                                    "type": "type(contract IERC20)",
                                                                                                    "value": "IERC20"
                                                                                                },
                                                                                                "id": 4031,
                                                                                                "name": "Identifier",
                                                                                                "src": "5439:6:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3998,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4032,
                                                                                                "name": "Identifier",
                                                                                                "src": "5446:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4033,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "5439:16:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4034,
                                                                                "name": "MemberAccess",
                                                                                "src": "5439:26:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 4035,
                                                                                        "name": "Identifier",
                                                                                        "src": "5466:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4036,
                                                                                "name": "MemberAccess",
                                                                                "src": "5466:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 4037,
                                                                        "name": "FunctionCall",
                                                                        "src": "5439:38:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4006,
                                                                            "type": "uint256",
                                                                            "value": "cashAmount"
                                                                        },
                                                                        "id": 4038,
                                                                        "name": "Identifier",
                                                                        "src": "5479:10:16"
                                                                    }
                                                                ],
                                                                "id": 4039,
                                                                "name": "BinaryOperation",
                                                                "src": "5439:50:16"
                                                            }
                                                        ],
                                                        "id": 4040,
                                                        "name": "BinaryOperation",
                                                        "src": "5363:126:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4e6f2062616c616e636520746f2063726561746520706f6f6c",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"No balance to create pool\"",
                                                            "value": "No balance to create pool"
                                                        },
                                                        "id": 4041,
                                                        "name": "Literal",
                                                        "src": "5491:27:16"
                                                    }
                                                ],
                                                "id": 4042,
                                                "name": "FunctionCall",
                                                "src": "5355:164:16"
                                            }
                                        ],
                                        "id": 4043,
                                        "name": "ExpressionStatement",
                                        "src": "5355:164:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transferFrom",
                                                            "referencedDeclaration": 2582,
                                                            "type": "function (address,address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2860,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 4044,
                                                                        "name": "Identifier",
                                                                        "src": "5530:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3998,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4045,
                                                                        "name": "Identifier",
                                                                        "src": "5536:8:16"
                                                                    }
                                                                ],
                                                                "id": 4046,
                                                                "name": "FunctionCall",
                                                                "src": "5530:15:16"
                                                            }
                                                        ],
                                                        "id": 4047,
                                                        "name": "MemberAccess",
                                                        "src": "5530:28:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4048,
                                                                "name": "Identifier",
                                                                "src": "5559:3:16"
                                                            }
                                                        ],
                                                        "id": 4049,
                                                        "name": "MemberAccess",
                                                        "src": "5559:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4050,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "5571:7:16"
                                                                    }
                                                                ],
                                                                "id": 4051,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "5571:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4052,
                                                                "name": "Identifier",
                                                                "src": "5579:4:16"
                                                            }
                                                        ],
                                                        "id": 4053,
                                                        "name": "FunctionCall",
                                                        "src": "5571:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4006,
                                                            "type": "uint256",
                                                            "value": "cashAmount"
                                                        },
                                                        "id": 4054,
                                                        "name": "Identifier",
                                                        "src": "5586:10:16"
                                                    }
                                                ],
                                                "id": 4055,
                                                "name": "FunctionCall",
                                                "src": "5530:67:16"
                                            }
                                        ],
                                        "id": 4056,
                                        "name": "ExpressionStatement",
                                        "src": "5530:67:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transferFrom",
                                                            "referencedDeclaration": 2582,
                                                            "type": "function (address,address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2860,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 4057,
                                                                        "name": "Identifier",
                                                                        "src": "5608:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3994,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4058,
                                                                        "name": "Identifier",
                                                                        "src": "5614:8:16"
                                                                    }
                                                                ],
                                                                "id": 4059,
                                                                "name": "FunctionCall",
                                                                "src": "5608:15:16"
                                                            }
                                                        ],
                                                        "id": 4060,
                                                        "name": "MemberAccess",
                                                        "src": "5608:28:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4061,
                                                                "name": "Identifier",
                                                                "src": "5637:3:16"
                                                            }
                                                        ],
                                                        "id": 4062,
                                                        "name": "MemberAccess",
                                                        "src": "5637:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4063,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "5649:7:16"
                                                                    }
                                                                ],
                                                                "id": 4064,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "5649:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4065,
                                                                "name": "Identifier",
                                                                "src": "5657:4:16"
                                                            }
                                                        ],
                                                        "id": 4066,
                                                        "name": "FunctionCall",
                                                        "src": "5649:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4002,
                                                            "type": "uint256",
                                                            "value": "securityAmount"
                                                        },
                                                        "id": 4067,
                                                        "name": "Identifier",
                                                        "src": "5664:14:16"
                                                    }
                                                ],
                                                "id": 4068,
                                                "name": "FunctionCall",
                                                "src": "5608:71:16"
                                            }
                                        ],
                                        "id": 4069,
                                        "name": "ExpressionStatement",
                                        "src": "5608:71:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "whiteList",
                                                            "referencedDeclaration": 12157,
                                                            "type": "function (address,uint256) external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ISecurity",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 12158,
                                                                            "type": "type(contract ISecurity)",
                                                                            "value": "ISecurity"
                                                                        },
                                                                        "id": 4070,
                                                                        "name": "Identifier",
                                                                        "src": "5692:9:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3994,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4071,
                                                                        "name": "Identifier",
                                                                        "src": "5702:8:16"
                                                                    }
                                                                ],
                                                                "id": 4072,
                                                                "name": "FunctionCall",
                                                                "src": "5692:19:16"
                                                            }
                                                        ],
                                                        "id": 4073,
                                                        "name": "MemberAccess",
                                                        "src": "5692:29:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3714,
                                                            "type": "address",
                                                            "value": "_vault"
                                                        },
                                                        "id": 4074,
                                                        "name": "Identifier",
                                                        "src": "5722:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4002,
                                                            "type": "uint256",
                                                            "value": "securityAmount"
                                                        },
                                                        "id": 4075,
                                                        "name": "Identifier",
                                                        "src": "5730:14:16"
                                                    }
                                                ],
                                                "id": 4076,
                                                "name": "FunctionCall",
                                                "src": "5692:53:16"
                                            }
                                        ],
                                        "id": 4077,
                                        "name": "ExpressionStatement",
                                        "src": "5692:53:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4081
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolparams",
                                                    "scope": 4106,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "struct IMarginTradingPoolFactory.FactoryPoolParams",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IMarginTradingPoolFactory.FactoryPoolParams",
                                                            "referencedDeclaration": 11675,
                                                            "type": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                                        },
                                                        "id": 4080,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "5762:43:16"
                                                    }
                                                ],
                                                "id": 4081,
                                                "name": "VariableDeclaration",
                                                "src": "5762:61:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": true,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "name",
                                                        "symbol",
                                                        "security",
                                                        "securityType",
                                                        "currency",
                                                        "cficode",
                                                        "minOrderSize",
                                                        "margin",
                                                        "collateral",
                                                        "tradeFeePercentage"
                                                    ],
                                                    "tryCall": false,
                                                    "type": "struct IMarginTradingPoolFactory.FactoryPoolParams memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_d8407c43b70b062a4ebfce2d65b9d672a39ddff01e2772e896f61833dce954b7",
                                                                    "typeString": "literal_string \"Verified Pool Token\""
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_7fee470b81c86493872dc1c9070ce794188d075d1c10f31e689bb13cbd714392",
                                                                    "typeString": "literal_string \"VPT\""
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "FactoryPoolParams",
                                                            "referencedDeclaration": 11675,
                                                            "type": "type(struct IMarginTradingPoolFactory.FactoryPoolParams storage pointer)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 11683,
                                                                    "type": "type(contract IMarginTradingPoolFactory)",
                                                                    "value": "IMarginTradingPoolFactory"
                                                                },
                                                                "id": 4082,
                                                                "name": "Identifier",
                                                                "src": "5826:25:16"
                                                            }
                                                        ],
                                                        "id": 4083,
                                                        "name": "MemberAccess",
                                                        "src": "5826:43:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "566572696669656420506f6f6c20546f6b656e",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Verified Pool Token\"",
                                                            "value": "Verified Pool Token"
                                                        },
                                                        "id": 4084,
                                                        "name": "Literal",
                                                        "src": "5892:21:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "565054",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"VPT\"",
                                                            "value": "VPT"
                                                        },
                                                        "id": 4085,
                                                        "name": "Literal",
                                                        "src": "5937:5:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3994,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4086,
                                                        "name": "Identifier",
                                                        "src": "5968:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3996,
                                                            "type": "bytes32",
                                                            "value": "securityType"
                                                        },
                                                        "id": 4087,
                                                        "name": "Identifier",
                                                        "src": "6005:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3998,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4088,
                                                        "name": "Identifier",
                                                        "src": "6043:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4000,
                                                            "type": "bytes32",
                                                            "value": "cficode"
                                                        },
                                                        "id": 4089,
                                                        "name": "Identifier",
                                                        "src": "6075:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4004,
                                                            "type": "uint256",
                                                            "value": "minimumOrderSize"
                                                        },
                                                        "id": 4090,
                                                        "name": "Identifier",
                                                        "src": "6112:16:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4008,
                                                            "type": "uint256",
                                                            "value": "margin"
                                                        },
                                                        "id": 4091,
                                                        "name": "Identifier",
                                                        "src": "6152:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4010,
                                                            "type": "uint256",
                                                            "value": "collateralAmnt"
                                                        },
                                                        "id": 4092,
                                                        "name": "Identifier",
                                                        "src": "6185:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4012,
                                                            "type": "uint256",
                                                            "value": "tradeFee"
                                                        },
                                                        "id": 4093,
                                                        "name": "Identifier",
                                                        "src": "6235:8:16"
                                                    }
                                                ],
                                                "id": 4094,
                                                "name": "FunctionCall",
                                                "src": "5826:429:16"
                                            }
                                        ],
                                        "id": 4095,
                                        "name": "VariableDeclarationStatement",
                                        "src": "5762:493:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                                    "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4168,
                                                            "type": "function (struct IMarginTradingPoolFactory.FactoryPoolParams memory,address,uint256,address,uint256,address)",
                                                            "value": "createPool"
                                                        },
                                                        "id": 4096,
                                                        "name": "Identifier",
                                                        "src": "6270:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4081,
                                                            "type": "struct IMarginTradingPoolFactory.FactoryPoolParams memory",
                                                            "value": "poolparams"
                                                        },
                                                        "id": 4097,
                                                        "name": "Identifier",
                                                        "src": "6281:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3994,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4098,
                                                        "name": "Identifier",
                                                        "src": "6293:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4002,
                                                            "type": "uint256",
                                                            "value": "securityAmount"
                                                        },
                                                        "id": 4099,
                                                        "name": "Identifier",
                                                        "src": "6303:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3998,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4100,
                                                        "name": "Identifier",
                                                        "src": "6319:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4006,
                                                            "type": "uint256",
                                                            "value": "cashAmount"
                                                        },
                                                        "id": 4101,
                                                        "name": "Identifier",
                                                        "src": "6329:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4102,
                                                                "name": "Identifier",
                                                                "src": "6341:3:16"
                                                            }
                                                        ],
                                                        "id": 4103,
                                                        "name": "MemberAccess",
                                                        "src": "6341:10:16"
                                                    }
                                                ],
                                                "id": 4104,
                                                "name": "FunctionCall",
                                                "src": "6270:82:16"
                                            }
                                        ],
                                        "id": 4105,
                                        "name": "ExpressionStatement",
                                        "src": "6270:82:16"
                                    }
                                ],
                                "id": 4106,
                                "name": "Block",
                                "src": "5344:1024:16"
                            }
                        ],
                        "id": 4107,
                        "name": "FunctionDefinition",
                        "src": "5029:1339:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "createPool",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolparams",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "struct IMarginTradingPoolFactory.FactoryPoolParams",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "IMarginTradingPoolFactory.FactoryPoolParams",
                                                    "referencedDeclaration": 11675,
                                                    "type": "struct IMarginTradingPoolFactory.FactoryPoolParams"
                                                },
                                                "id": 4108,
                                                "name": "UserDefinedTypeName",
                                                "src": "6396:43:16"
                                            }
                                        ],
                                        "id": 4109,
                                        "name": "VariableDeclaration",
                                        "src": "6396:61:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4110,
                                                "name": "ElementaryTypeName",
                                                "src": "6459:7:16"
                                            }
                                        ],
                                        "id": 4111,
                                        "name": "VariableDeclaration",
                                        "src": "6459:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityAmount",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4112,
                                                "name": "ElementaryTypeName",
                                                "src": "6477:7:16"
                                            }
                                        ],
                                        "id": 4113,
                                        "name": "VariableDeclaration",
                                        "src": "6477:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4114,
                                                "name": "ElementaryTypeName",
                                                "src": "6501:7:16"
                                            }
                                        ],
                                        "id": 4115,
                                        "name": "VariableDeclaration",
                                        "src": "6501:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashAmount",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4116,
                                                "name": "ElementaryTypeName",
                                                "src": "6519:7:16"
                                            }
                                        ],
                                        "id": 4117,
                                        "name": "VariableDeclaration",
                                        "src": "6519:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "creator",
                                            "scope": 4168,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4118,
                                                "name": "ElementaryTypeName",
                                                "src": "6539:7:16"
                                            }
                                        ],
                                        "id": 4119,
                                        "name": "VariableDeclaration",
                                        "src": "6539:15:16"
                                    }
                                ],
                                "id": 4120,
                                "name": "ParameterList",
                                "src": "6395:160:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4121,
                                "name": "ParameterList",
                                "src": "6564:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3735,
                                                                            "type": "mapping(address => mapping(address => address))",
                                                                            "value": "pools"
                                                                        },
                                                                        "id": 4122,
                                                                        "name": "Identifier",
                                                                        "src": "6575:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4111,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4123,
                                                                        "name": "Identifier",
                                                                        "src": "6581:8:16"
                                                                    }
                                                                ],
                                                                "id": 4125,
                                                                "name": "IndexAccess",
                                                                "src": "6575:15:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4115,
                                                                    "type": "address",
                                                                    "value": "currency"
                                                                },
                                                                "id": 4124,
                                                                "name": "Identifier",
                                                                "src": "6591:8:16"
                                                            }
                                                        ],
                                                        "id": 4126,
                                                        "name": "IndexAccess",
                                                        "src": "6575:25:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_FactoryPoolParams_$11675_memory_ptr",
                                                                            "typeString": "struct IMarginTradingPoolFactory.FactoryPoolParams memory"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "create",
                                                                    "referencedDeclaration": 11682,
                                                                    "type": "function (struct IMarginTradingPoolFactory.FactoryPoolParams memory) external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IMarginTradingPoolFactory",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 11683,
                                                                                    "type": "type(contract IMarginTradingPoolFactory)",
                                                                                    "value": "IMarginTradingPoolFactory"
                                                                                },
                                                                                "id": 4127,
                                                                                "name": "Identifier",
                                                                                "src": "6603:25:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3712,
                                                                                    "type": "address",
                                                                                    "value": "_poolFactory"
                                                                                },
                                                                                "id": 4128,
                                                                                "name": "Identifier",
                                                                                "src": "6629:12:16"
                                                                            }
                                                                        ],
                                                                        "id": 4129,
                                                                        "name": "FunctionCall",
                                                                        "src": "6603:39:16"
                                                                    }
                                                                ],
                                                                "id": 4130,
                                                                "name": "MemberAccess",
                                                                "src": "6603:46:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4109,
                                                                    "type": "struct IMarginTradingPoolFactory.FactoryPoolParams memory",
                                                                    "value": "poolparams"
                                                                },
                                                                "id": 4131,
                                                                "name": "Identifier",
                                                                "src": "6650:10:16"
                                                            }
                                                        ],
                                                        "id": 4132,
                                                        "name": "FunctionCall",
                                                        "src": "6603:58:16"
                                                    }
                                                ],
                                                "id": 4133,
                                                "name": "Assignment",
                                                "src": "6575:86:16"
                                            }
                                        ],
                                        "id": 4134,
                                        "name": "ExpressionStatement",
                                        "src": "6575:86:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4136
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolId",
                                                    "scope": 4167,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 4135,
                                                        "name": "ElementaryTypeName",
                                                        "src": "6675:7:16"
                                                    }
                                                ],
                                                "id": 4136,
                                                "name": "VariableDeclaration",
                                                "src": "6675:14:16"
                                            },
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bytes32",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getPoolId",
                                                            "referencedDeclaration": 11615,
                                                            "type": "function () view external returns (bytes32)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IMarginTradingPool",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 11651,
                                                                            "type": "type(contract IMarginTradingPool)",
                                                                            "value": "IMarginTradingPool"
                                                                        },
                                                                        "id": 4137,
                                                                        "name": "Identifier",
                                                                        "src": "6692:18:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => address)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3735,
                                                                                            "type": "mapping(address => mapping(address => address))",
                                                                                            "value": "pools"
                                                                                        },
                                                                                        "id": 4138,
                                                                                        "name": "Identifier",
                                                                                        "src": "6711:5:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4111,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 4139,
                                                                                        "name": "Identifier",
                                                                                        "src": "6717:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4140,
                                                                                "name": "IndexAccess",
                                                                                "src": "6711:15:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4115,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4141,
                                                                                "name": "Identifier",
                                                                                "src": "6727:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4142,
                                                                        "name": "IndexAccess",
                                                                        "src": "6711:25:16"
                                                                    }
                                                                ],
                                                                "id": 4143,
                                                                "name": "FunctionCall",
                                                                "src": "6692:45:16"
                                                            }
                                                        ],
                                                        "id": 4144,
                                                        "name": "MemberAccess",
                                                        "src": "6692:55:16"
                                                    }
                                                ],
                                                "id": 4145,
                                                "name": "FunctionCall",
                                                "src": "6692:57:16"
                                            }
                                        ],
                                        "id": 4146,
                                        "name": "VariableDeclarationStatement",
                                        "src": "6675:74:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "bytes32"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "bytes32"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3739,
                                                                    "type": "mapping(address => bytes32)",
                                                                    "value": "poolSecurity"
                                                                },
                                                                "id": 4147,
                                                                "name": "Identifier",
                                                                "src": "6762:12:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4111,
                                                                    "type": "address",
                                                                    "value": "security"
                                                                },
                                                                "id": 4148,
                                                                "name": "Identifier",
                                                                "src": "6775:8:16"
                                                            }
                                                        ],
                                                        "id": 4149,
                                                        "name": "IndexAccess",
                                                        "src": "6762:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4136,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4150,
                                                        "name": "Identifier",
                                                        "src": "6787:6:16"
                                                    }
                                                ],
                                                "id": 4151,
                                                "name": "Assignment",
                                                "src": "6762:31:16"
                                            }
                                        ],
                                        "id": 4152,
                                        "name": "ExpressionStatement",
                                        "src": "6762:31:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3743,
                                                                    "type": "mapping(bytes32 => address)",
                                                                    "value": "issuer"
                                                                },
                                                                "id": 4153,
                                                                "name": "Identifier",
                                                                "src": "6805:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4136,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 4154,
                                                                "name": "Identifier",
                                                                "src": "6812:6:16"
                                                            }
                                                        ],
                                                        "id": 4155,
                                                        "name": "IndexAccess",
                                                        "src": "6805:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4119,
                                                            "type": "address",
                                                            "value": "creator"
                                                        },
                                                        "id": 4156,
                                                        "name": "Identifier",
                                                        "src": "6822:7:16"
                                                    }
                                                ],
                                                "id": 4157,
                                                "name": "Assignment",
                                                "src": "6805:24:16"
                                            }
                                        ],
                                        "id": 4158,
                                        "name": "ExpressionStatement",
                                        "src": "6805:24:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4312,
                                                            "type": "function (address,address,uint256,uint256,bytes32)",
                                                            "value": "joinPool"
                                                        },
                                                        "id": 4159,
                                                        "name": "Identifier",
                                                        "src": "6840:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4111,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4160,
                                                        "name": "Identifier",
                                                        "src": "6849:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4115,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4161,
                                                        "name": "Identifier",
                                                        "src": "6859:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4113,
                                                            "type": "uint256",
                                                            "value": "securityAmount"
                                                        },
                                                        "id": 4162,
                                                        "name": "Identifier",
                                                        "src": "6869:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4117,
                                                            "type": "uint256",
                                                            "value": "cashAmount"
                                                        },
                                                        "id": 4163,
                                                        "name": "Identifier",
                                                        "src": "6885:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4136,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4164,
                                                        "name": "Identifier",
                                                        "src": "6897:6:16"
                                                    }
                                                ],
                                                "id": 4165,
                                                "name": "FunctionCall",
                                                "src": "6840:64:16"
                                            }
                                        ],
                                        "id": 4166,
                                        "name": "ExpressionStatement",
                                        "src": "6840:64:16"
                                    }
                                ],
                                "id": 4167,
                                "name": "Block",
                                "src": "6564:348:16"
                            }
                        ],
                        "id": 4168,
                        "name": "FunctionDefinition",
                        "src": "6376:536:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "joinPool",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4312,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4169,
                                                "name": "ElementaryTypeName",
                                                "src": "6938:7:16"
                                            }
                                        ],
                                        "id": 4170,
                                        "name": "VariableDeclaration",
                                        "src": "6938:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4312,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4171,
                                                "name": "ElementaryTypeName",
                                                "src": "6956:7:16"
                                            }
                                        ],
                                        "id": 4172,
                                        "name": "VariableDeclaration",
                                        "src": "6956:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityAmount",
                                            "scope": 4312,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4173,
                                                "name": "ElementaryTypeName",
                                                "src": "6974:7:16"
                                            }
                                        ],
                                        "id": 4174,
                                        "name": "VariableDeclaration",
                                        "src": "6974:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashAmount",
                                            "scope": 4312,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4175,
                                                "name": "ElementaryTypeName",
                                                "src": "6998:7:16"
                                            }
                                        ],
                                        "id": 4176,
                                        "name": "VariableDeclaration",
                                        "src": "6998:18:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "scope": 4312,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 4177,
                                                "name": "ElementaryTypeName",
                                                "src": "7018:7:16"
                                            }
                                        ],
                                        "id": 4178,
                                        "name": "VariableDeclaration",
                                        "src": "7018:14:16"
                                    }
                                ],
                                "id": 4179,
                                "name": "ParameterList",
                                "src": "6937:96:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4180,
                                "name": "ParameterList",
                                "src": "7042:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4184,
                                                null,
                                                null
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "tokens",
                                                    "scope": 4311,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "contract IERC20[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "contract IERC20[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "IERC20",
                                                                    "referencedDeclaration": 2938,
                                                                    "type": "contract IERC20"
                                                                },
                                                                "id": 4182,
                                                                "name": "UserDefinedTypeName",
                                                                "src": "7101:6:16"
                                                            }
                                                        ],
                                                        "id": 4183,
                                                        "name": "ArrayTypeName",
                                                        "src": "7101:8:16"
                                                    }
                                                ],
                                                "id": 4184,
                                                "name": "VariableDeclaration",
                                                "src": "7101:22:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(contract IERC20[] memory,uint256[] memory,uint256)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getPoolTokens",
                                                            "referencedDeclaration": 3444,
                                                            "type": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IVault",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3688,
                                                                            "type": "type(contract IVault)",
                                                                            "value": "IVault"
                                                                        },
                                                                        "id": 4185,
                                                                        "name": "Identifier",
                                                                        "src": "7131:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3714,
                                                                            "type": "address",
                                                                            "value": "_vault"
                                                                        },
                                                                        "id": 4186,
                                                                        "name": "Identifier",
                                                                        "src": "7138:6:16"
                                                                    }
                                                                ],
                                                                "id": 4187,
                                                                "name": "FunctionCall",
                                                                "src": "7131:14:16"
                                                            }
                                                        ],
                                                        "id": 4188,
                                                        "name": "MemberAccess",
                                                        "src": "7131:28:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4178,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4189,
                                                        "name": "Identifier",
                                                        "src": "7160:6:16"
                                                    }
                                                ],
                                                "id": 4190,
                                                "name": "FunctionCall",
                                                "src": "7131:36:16"
                                            }
                                        ],
                                        "id": 4191,
                                        "name": "VariableDeclarationStatement",
                                        "src": "7100:67:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4195
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "assets",
                                                    "scope": 4311,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "contract IAsset[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "contract IAsset[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "IAsset",
                                                                    "referencedDeclaration": 3127,
                                                                    "type": "contract IAsset"
                                                                },
                                                                "id": 4193,
                                                                "name": "UserDefinedTypeName",
                                                                "src": "7178:6:16"
                                                            }
                                                        ],
                                                        "id": 4194,
                                                        "name": "ArrayTypeName",
                                                        "src": "7178:8:16"
                                                    }
                                                ],
                                                "id": 4195,
                                                "name": "VariableDeclaration",
                                                "src": "7178:22:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IAsset[] memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                                    "typeString": "contract IERC20[] memory"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6311,
                                                            "type": "function (contract IERC20[] memory) pure returns (contract IAsset[] memory)",
                                                            "value": "_convertERC20sToAssets"
                                                        },
                                                        "id": 4196,
                                                        "name": "Identifier",
                                                        "src": "7203:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4184,
                                                            "type": "contract IERC20[] memory",
                                                            "value": "tokens"
                                                        },
                                                        "id": 4197,
                                                        "name": "Identifier",
                                                        "src": "7226:6:16"
                                                    }
                                                ],
                                                "id": 4198,
                                                "name": "FunctionCall",
                                                "src": "7203:30:16"
                                            }
                                        ],
                                        "id": 4199,
                                        "name": "VariableDeclarationStatement",
                                        "src": "7178:55:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4204
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "maxAmountsIn",
                                                    "scope": 4311,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "uint256[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "uint256[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "uint256",
                                                                    "type": "uint256"
                                                                },
                                                                "id": 4202,
                                                                "name": "ElementaryTypeName",
                                                                "src": "7244:7:16"
                                                            }
                                                        ],
                                                        "id": 4203,
                                                        "name": "ArrayTypeName",
                                                        "src": "7244:9:16"
                                                    }
                                                ],
                                                "id": 4204,
                                                "name": "VariableDeclaration",
                                                "src": "7244:29:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256[] memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "type": "function (uint256) pure returns (uint256[] memory)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "type": "uint256[]"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint256",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 4205,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "7280:7:16"
                                                                    }
                                                                ],
                                                                "id": 4206,
                                                                "name": "ArrayTypeName",
                                                                "src": "7280:9:16"
                                                            }
                                                        ],
                                                        "id": 4207,
                                                        "name": "NewExpression",
                                                        "src": "7276:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "length",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4184,
                                                                    "type": "contract IERC20[] memory",
                                                                    "value": "tokens"
                                                                },
                                                                "id": 4208,
                                                                "name": "Identifier",
                                                                "src": "7290:6:16"
                                                            }
                                                        ],
                                                        "id": 4209,
                                                        "name": "MemberAccess",
                                                        "src": "7290:13:16"
                                                    }
                                                ],
                                                "id": 4210,
                                                "name": "FunctionCall",
                                                "src": "7276:28:16"
                                            }
                                        ],
                                        "id": 4211,
                                        "name": "VariableDeclarationStatement",
                                        "src": "7244:60:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "approve",
                                                            "referencedDeclaration": 2543,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2860,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 4212,
                                                                        "name": "Identifier",
                                                                        "src": "7315:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4172,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4213,
                                                                        "name": "Identifier",
                                                                        "src": "7321:8:16"
                                                                    }
                                                                ],
                                                                "id": 4214,
                                                                "name": "FunctionCall",
                                                                "src": "7315:15:16"
                                                            }
                                                        ],
                                                        "id": 4215,
                                                        "name": "MemberAccess",
                                                        "src": "7315:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3714,
                                                            "type": "address",
                                                            "value": "_vault"
                                                        },
                                                        "id": 4216,
                                                        "name": "Identifier",
                                                        "src": "7339:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4176,
                                                            "type": "uint256",
                                                            "value": "cashAmount"
                                                        },
                                                        "id": 4217,
                                                        "name": "Identifier",
                                                        "src": "7347:10:16"
                                                    }
                                                ],
                                                "id": 4218,
                                                "name": "FunctionCall",
                                                "src": "7315:43:16"
                                            }
                                        ],
                                        "id": 4219,
                                        "name": "ExpressionStatement",
                                        "src": "7315:43:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "approve",
                                                            "referencedDeclaration": 2543,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2860,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 4220,
                                                                        "name": "Identifier",
                                                                        "src": "7369:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4170,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4221,
                                                                        "name": "Identifier",
                                                                        "src": "7375:8:16"
                                                                    }
                                                                ],
                                                                "id": 4222,
                                                                "name": "FunctionCall",
                                                                "src": "7369:15:16"
                                                            }
                                                        ],
                                                        "id": 4223,
                                                        "name": "MemberAccess",
                                                        "src": "7369:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3714,
                                                            "type": "address",
                                                            "value": "_vault"
                                                        },
                                                        "id": 4224,
                                                        "name": "Identifier",
                                                        "src": "7393:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4174,
                                                            "type": "uint256",
                                                            "value": "securityAmount"
                                                        },
                                                        "id": 4225,
                                                        "name": "Identifier",
                                                        "src": "7401:14:16"
                                                    }
                                                ],
                                                "id": 4226,
                                                "name": "FunctionCall",
                                                "src": "7369:47:16"
                                            }
                                        ],
                                        "id": 4227,
                                        "name": "ExpressionStatement",
                                        "src": "7369:47:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "assignments": [
                                                        4229
                                                    ]
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "constant": false,
                                                            "mutability": "mutable",
                                                            "name": "t",
                                                            "scope": 4277,
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "type": "uint256",
                                                            "visibility": "internal"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "uint256",
                                                                    "type": "uint256"
                                                                },
                                                                "id": 4228,
                                                                "name": "ElementaryTypeName",
                                                                "src": "7431:7:16"
                                                            }
                                                        ],
                                                        "id": 4229,
                                                        "name": "VariableDeclaration",
                                                        "src": "7431:9:16"
                                                    }
                                                ],
                                                "id": 4230,
                                                "name": "VariableDeclarationStatement",
                                                "src": "7431:9:16"
                                            },
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "<",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4229,
                                                            "type": "uint256",
                                                            "value": "t"
                                                        },
                                                        "id": 4231,
                                                        "name": "Identifier",
                                                        "src": "7442:1:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "length",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4184,
                                                                    "type": "contract IERC20[] memory",
                                                                    "value": "tokens"
                                                                },
                                                                "id": 4232,
                                                                "name": "Identifier",
                                                                "src": "7446:6:16"
                                                            }
                                                        ],
                                                        "id": 4233,
                                                        "name": "MemberAccess",
                                                        "src": "7446:13:16"
                                                    }
                                                ],
                                                "id": 4234,
                                                "name": "BinaryOperation",
                                                "src": "7442:17:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4229,
                                                                    "type": "uint256",
                                                                    "value": "t"
                                                                },
                                                                "id": 4235,
                                                                "name": "Identifier",
                                                                "src": "7461:1:16"
                                                            }
                                                        ],
                                                        "id": 4236,
                                                        "name": "UnaryOperation",
                                                        "src": "7461:3:16"
                                                    }
                                                ],
                                                "id": 4237,
                                                "name": "ExpressionStatement",
                                                "src": "7461:3:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                        "typeString": "contract IERC20"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "==",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "contract IERC20"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4184,
                                                                                    "type": "contract IERC20[] memory",
                                                                                    "value": "tokens"
                                                                                },
                                                                                "id": 4238,
                                                                                "name": "Identifier",
                                                                                "src": "7484:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4229,
                                                                                    "type": "uint256",
                                                                                    "value": "t"
                                                                                },
                                                                                "id": 4239,
                                                                                "name": "Identifier",
                                                                                "src": "7491:1:16"
                                                                            }
                                                                        ],
                                                                        "id": 4240,
                                                                        "name": "IndexAccess",
                                                                        "src": "7484:9:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2938,
                                                                                    "type": "type(contract IERC20)",
                                                                                    "value": "IERC20"
                                                                                },
                                                                                "id": 4241,
                                                                                "name": "Identifier",
                                                                                "src": "7495:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4170,
                                                                                    "type": "address",
                                                                                    "value": "security"
                                                                                },
                                                                                "id": 4242,
                                                                                "name": "Identifier",
                                                                                "src": "7502:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4243,
                                                                        "name": "FunctionCall",
                                                                        "src": "7495:16:16"
                                                                    }
                                                                ],
                                                                "id": 4244,
                                                                "name": "BinaryOperation",
                                                                "src": "7484:27:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "=",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": true,
                                                                                    "type": "uint256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4204,
                                                                                            "type": "uint256[] memory",
                                                                                            "value": "maxAmountsIn"
                                                                                        },
                                                                                        "id": 4245,
                                                                                        "name": "Identifier",
                                                                                        "src": "7530:12:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4229,
                                                                                            "type": "uint256",
                                                                                            "value": "t"
                                                                                        },
                                                                                        "id": 4246,
                                                                                        "name": "Identifier",
                                                                                        "src": "7543:1:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4247,
                                                                                "name": "IndexAccess",
                                                                                "src": "7530:15:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4174,
                                                                                    "type": "uint256",
                                                                                    "value": "securityAmount"
                                                                                },
                                                                                "id": 4248,
                                                                                "name": "Identifier",
                                                                                "src": "7548:14:16"
                                                                            }
                                                                        ],
                                                                        "id": 4249,
                                                                        "name": "Assignment",
                                                                        "src": "7530:32:16"
                                                                    }
                                                                ],
                                                                "id": 4250,
                                                                "name": "ExpressionStatement",
                                                                "src": "7530:32:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                "typeString": "contract IERC20"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "contract IERC20"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4184,
                                                                                            "type": "contract IERC20[] memory",
                                                                                            "value": "tokens"
                                                                                        },
                                                                                        "id": 4251,
                                                                                        "name": "Identifier",
                                                                                        "src": "7585:6:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4229,
                                                                                            "type": "uint256",
                                                                                            "value": "t"
                                                                                        },
                                                                                        "id": 4252,
                                                                                        "name": "Identifier",
                                                                                        "src": "7592:1:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4253,
                                                                                "name": "IndexAccess",
                                                                                "src": "7585:9:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract IERC20",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2938,
                                                                                            "type": "type(contract IERC20)",
                                                                                            "value": "IERC20"
                                                                                        },
                                                                                        "id": 4254,
                                                                                        "name": "Identifier",
                                                                                        "src": "7596:6:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4172,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 4255,
                                                                                        "name": "Identifier",
                                                                                        "src": "7603:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4256,
                                                                                "name": "FunctionCall",
                                                                                "src": "7596:16:16"
                                                                            }
                                                                        ],
                                                                        "id": 4257,
                                                                        "name": "BinaryOperation",
                                                                        "src": "7585:27:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "=",
                                                                                    "type": "uint256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": true,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4204,
                                                                                                    "type": "uint256[] memory",
                                                                                                    "value": "maxAmountsIn"
                                                                                                },
                                                                                                "id": 4258,
                                                                                                "name": "Identifier",
                                                                                                "src": "7631:12:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4229,
                                                                                                    "type": "uint256",
                                                                                                    "value": "t"
                                                                                                },
                                                                                                "id": 4259,
                                                                                                "name": "Identifier",
                                                                                                "src": "7644:1:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4260,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "7631:15:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4176,
                                                                                            "type": "uint256",
                                                                                            "value": "cashAmount"
                                                                                        },
                                                                                        "id": 4261,
                                                                                        "name": "Identifier",
                                                                                        "src": "7649:10:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4262,
                                                                                "name": "Assignment",
                                                                                "src": "7631:28:16"
                                                                            }
                                                                        ],
                                                                        "id": 4263,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "7631:28:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "=",
                                                                                    "type": "uint256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": true,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4204,
                                                                                                    "type": "uint256[] memory",
                                                                                                    "value": "maxAmountsIn"
                                                                                                },
                                                                                                "id": 4264,
                                                                                                "name": "Identifier",
                                                                                                "src": "7697:12:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4229,
                                                                                                    "type": "uint256",
                                                                                                    "value": "t"
                                                                                                },
                                                                                                "id": 4265,
                                                                                                "name": "Identifier",
                                                                                                "src": "7710:1:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4266,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "7697:15:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 4267,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "7715:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4268,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "7715:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3726,
                                                                                                    "type": "uint256",
                                                                                                    "value": "_INITIAL_BPT_SUPPLY"
                                                                                                },
                                                                                                "id": 4269,
                                                                                                "name": "Identifier",
                                                                                                "src": "7724:19:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3729,
                                                                                                    "type": "uint256",
                                                                                                    "value": "_DEFAULT_MINIMUM_BPT"
                                                                                                },
                                                                                                "id": 4270,
                                                                                                "name": "Identifier",
                                                                                                "src": "7745:20:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4271,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "7715:51:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4272,
                                                                                "name": "Assignment",
                                                                                "src": "7697:69:16"
                                                                            }
                                                                        ],
                                                                        "id": 4273,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "7697:69:16"
                                                                    }
                                                                ],
                                                                "id": 4274,
                                                                "name": "IfStatement",
                                                                "src": "7582:184:16"
                                                            }
                                                        ],
                                                        "id": 4275,
                                                        "name": "IfStatement",
                                                        "src": "7481:285:16"
                                                    }
                                                ],
                                                "id": 4276,
                                                "name": "Block",
                                                "src": "7466:312:16"
                                            }
                                        ],
                                        "id": 4277,
                                        "name": "ForStatement",
                                        "src": "7427:351:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4281
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "request",
                                                    "scope": 4311,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "struct IVault.JoinPoolRequest",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IVault.JoinPoolRequest",
                                                            "referencedDeclaration": 3467,
                                                            "type": "struct IVault.JoinPoolRequest"
                                                        },
                                                        "id": 4280,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "7788:22:16"
                                                    }
                                                ],
                                                "id": 4281,
                                                "name": "VariableDeclaration",
                                                "src": "7788:37:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": true,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "assets",
                                                        "maxAmountsIn",
                                                        "userData",
                                                        "fromInternalBalance"
                                                    ],
                                                    "tryCall": false,
                                                    "type": "struct IVault.JoinPoolRequest memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                                    "typeString": "contract IAsset[] memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                    "typeString": "uint256[] memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "JoinPoolRequest",
                                                            "referencedDeclaration": 3467,
                                                            "type": "type(struct IVault.JoinPoolRequest storage pointer)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3688,
                                                                    "type": "type(contract IVault)",
                                                                    "value": "IVault"
                                                                },
                                                                "id": 4282,
                                                                "name": "Identifier",
                                                                "src": "7828:6:16"
                                                            }
                                                        ],
                                                        "id": 4283,
                                                        "name": "MemberAccess",
                                                        "src": "7828:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4195,
                                                            "type": "contract IAsset[] memory",
                                                            "value": "assets"
                                                        },
                                                        "id": 4284,
                                                        "name": "Identifier",
                                                        "src": "7874:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4204,
                                                            "type": "uint256[] memory",
                                                            "value": "maxAmountsIn"
                                                        },
                                                        "id": 4285,
                                                        "name": "Identifier",
                                                        "src": "7909:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bytes memory",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_enum$_JoinKind_$11354",
                                                                            "typeString": "enum IMarginManager.JoinKind"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                            "typeString": "uint256[] memory"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "member_name": "encode",
                                                                    "type": "function () pure returns (bytes memory)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -1,
                                                                            "type": "abi",
                                                                            "value": "abi"
                                                                        },
                                                                        "id": 4286,
                                                                        "name": "Identifier",
                                                                        "src": "7946:3:16"
                                                                    }
                                                                ],
                                                                "id": 4287,
                                                                "name": "MemberAccess",
                                                                "src": "7946:10:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "member_name": "INIT",
                                                                    "type": "enum IMarginManager.JoinKind"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 11354,
                                                                            "type": "type(enum IMarginManager.JoinKind)",
                                                                            "value": "JoinKind"
                                                                        },
                                                                        "id": 4288,
                                                                        "name": "Identifier",
                                                                        "src": "7957:8:16"
                                                                    }
                                                                ],
                                                                "id": 4289,
                                                                "name": "MemberAccess",
                                                                "src": "7957:13:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4204,
                                                                    "type": "uint256[] memory",
                                                                    "value": "maxAmountsIn"
                                                                },
                                                                "id": 4290,
                                                                "name": "Identifier",
                                                                "src": "7972:12:16"
                                                            }
                                                        ],
                                                        "id": 4291,
                                                        "name": "FunctionCall",
                                                        "src": "7946:39:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "66616c7365",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "false"
                                                        },
                                                        "id": 4292,
                                                        "name": "Literal",
                                                        "src": "8021:5:16"
                                                    }
                                                ],
                                                "id": 4293,
                                                "name": "FunctionCall",
                                                "src": "7828:210:16"
                                            }
                                        ],
                                        "id": 4294,
                                        "name": "VariableDeclarationStatement",
                                        "src": "7788:250:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_struct$_JoinPoolRequest_$3467_memory_ptr",
                                                                    "typeString": "struct IVault.JoinPoolRequest memory"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "joinPool",
                                                            "referencedDeclaration": 3456,
                                                            "type": "function (bytes32,address,address,struct IVault.JoinPoolRequest memory) payable external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IVault",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3688,
                                                                            "type": "type(contract IVault)",
                                                                            "value": "IVault"
                                                                        },
                                                                        "id": 4295,
                                                                        "name": "Identifier",
                                                                        "src": "8058:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3714,
                                                                            "type": "address",
                                                                            "value": "_vault"
                                                                        },
                                                                        "id": 4296,
                                                                        "name": "Identifier",
                                                                        "src": "8065:6:16"
                                                                    }
                                                                ],
                                                                "id": 4297,
                                                                "name": "FunctionCall",
                                                                "src": "8058:14:16"
                                                            }
                                                        ],
                                                        "id": 4298,
                                                        "name": "MemberAccess",
                                                        "src": "8058:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4178,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4299,
                                                        "name": "Identifier",
                                                        "src": "8082:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4300,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "8090:7:16"
                                                                    }
                                                                ],
                                                                "id": 4301,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8090:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4302,
                                                                "name": "Identifier",
                                                                "src": "8098:4:16"
                                                            }
                                                        ],
                                                        "id": 4303,
                                                        "name": "FunctionCall",
                                                        "src": "8090:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4304,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "8105:7:16"
                                                                    }
                                                                ],
                                                                "id": 4305,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8105:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4306,
                                                                "name": "Identifier",
                                                                "src": "8113:4:16"
                                                            }
                                                        ],
                                                        "id": 4307,
                                                        "name": "FunctionCall",
                                                        "src": "8105:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4281,
                                                            "type": "struct IVault.JoinPoolRequest memory",
                                                            "value": "request"
                                                        },
                                                        "id": 4308,
                                                        "name": "Identifier",
                                                        "src": "8120:7:16"
                                                    }
                                                ],
                                                "id": 4309,
                                                "name": "FunctionCall",
                                                "src": "8058:70:16"
                                            }
                                        ],
                                        "id": 4310,
                                        "name": "ExpressionStatement",
                                        "src": "8058:70:16"
                                    }
                                ],
                                "id": 4311,
                                "name": "Block",
                                "src": "7042:1094:16"
                            }
                        ],
                        "id": 4312,
                        "name": "FunctionDefinition",
                        "src": "6920:1216:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11436
                            ],
                            "functionSelector": "719dcf4a",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "close",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4318,
                                "name": "OverrideSpecifier",
                                "src": "8195:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4442,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4313,
                                                "name": "ElementaryTypeName",
                                                "src": "8159:7:16"
                                            }
                                        ],
                                        "id": 4314,
                                        "name": "VariableDeclaration",
                                        "src": "8159:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4442,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4315,
                                                "name": "ElementaryTypeName",
                                                "src": "8177:7:16"
                                            }
                                        ],
                                        "id": 4316,
                                        "name": "VariableDeclaration",
                                        "src": "8177:16:16"
                                    }
                                ],
                                "id": 4317,
                                "name": "ParameterList",
                                "src": "8158:36:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4324,
                                "name": "ParameterList",
                                "src": "8252:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3893,
                                            "type": "modifier (address,address)",
                                            "value": "onlyIssueManager"
                                        },
                                        "id": 4319,
                                        "name": "Identifier",
                                        "src": "8213:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 4320,
                                                "name": "Identifier",
                                                "src": "8230:3:16"
                                            }
                                        ],
                                        "id": 4321,
                                        "name": "MemberAccess",
                                        "src": "8230:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 4314,
                                            "type": "address",
                                            "value": "security"
                                        },
                                        "id": 4322,
                                        "name": "Identifier",
                                        "src": "8242:8:16"
                                    }
                                ],
                                "id": 4323,
                                "name": "ModifierInvocation",
                                "src": "8213:38:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4326
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolId",
                                                    "scope": 4441,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 4325,
                                                        "name": "ElementaryTypeName",
                                                        "src": "8389:7:16"
                                                    }
                                                ],
                                                "id": 4326,
                                                "name": "VariableDeclaration",
                                                "src": "8389:14:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "bytes32"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3739,
                                                            "type": "mapping(address => bytes32)",
                                                            "value": "poolSecurity"
                                                        },
                                                        "id": 4327,
                                                        "name": "Identifier",
                                                        "src": "8406:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4314,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4328,
                                                        "name": "Identifier",
                                                        "src": "8419:8:16"
                                                    }
                                                ],
                                                "id": 4329,
                                                "name": "IndexAccess",
                                                "src": "8406:22:16"
                                            }
                                        ],
                                        "id": 4330,
                                        "name": "VariableDeclarationStatement",
                                        "src": "8389:39:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4334,
                                                null,
                                                null
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "tokens",
                                                    "scope": 4441,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "contract IERC20[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "contract IERC20[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "IERC20",
                                                                    "referencedDeclaration": 2938,
                                                                    "type": "contract IERC20"
                                                                },
                                                                "id": 4332,
                                                                "name": "UserDefinedTypeName",
                                                                "src": "8440:6:16"
                                                            }
                                                        ],
                                                        "id": 4333,
                                                        "name": "ArrayTypeName",
                                                        "src": "8440:8:16"
                                                    }
                                                ],
                                                "id": 4334,
                                                "name": "VariableDeclaration",
                                                "src": "8440:22:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple(contract IERC20[] memory,uint256[] memory,uint256)",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getPoolTokens",
                                                            "referencedDeclaration": 3444,
                                                            "type": "function (bytes32) view external returns (contract IERC20[] memory,uint256[] memory,uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IVault",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3688,
                                                                            "type": "type(contract IVault)",
                                                                            "value": "IVault"
                                                                        },
                                                                        "id": 4335,
                                                                        "name": "Identifier",
                                                                        "src": "8470:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3714,
                                                                            "type": "address",
                                                                            "value": "_vault"
                                                                        },
                                                                        "id": 4336,
                                                                        "name": "Identifier",
                                                                        "src": "8477:6:16"
                                                                    }
                                                                ],
                                                                "id": 4337,
                                                                "name": "FunctionCall",
                                                                "src": "8470:14:16"
                                                            }
                                                        ],
                                                        "id": 4338,
                                                        "name": "MemberAccess",
                                                        "src": "8470:28:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4326,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4339,
                                                        "name": "Identifier",
                                                        "src": "8499:6:16"
                                                    }
                                                ],
                                                "id": 4340,
                                                "name": "FunctionCall",
                                                "src": "8470:36:16"
                                            }
                                        ],
                                        "id": 4341,
                                        "name": "VariableDeclarationStatement",
                                        "src": "8439:67:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4345
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "assets",
                                                    "scope": 4441,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "contract IAsset[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "contract IAsset[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "IAsset",
                                                                    "referencedDeclaration": 3127,
                                                                    "type": "contract IAsset"
                                                                },
                                                                "id": 4343,
                                                                "name": "UserDefinedTypeName",
                                                                "src": "8517:6:16"
                                                            }
                                                        ],
                                                        "id": 4344,
                                                        "name": "ArrayTypeName",
                                                        "src": "8517:8:16"
                                                    }
                                                ],
                                                "id": 4345,
                                                "name": "VariableDeclaration",
                                                "src": "8517:22:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract IAsset[] memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_array$_t_contract$_IERC20_$2938_$dyn_memory_ptr",
                                                                    "typeString": "contract IERC20[] memory"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6311,
                                                            "type": "function (contract IERC20[] memory) pure returns (contract IAsset[] memory)",
                                                            "value": "_convertERC20sToAssets"
                                                        },
                                                        "id": 4346,
                                                        "name": "Identifier",
                                                        "src": "8542:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4334,
                                                            "type": "contract IERC20[] memory",
                                                            "value": "tokens"
                                                        },
                                                        "id": 4347,
                                                        "name": "Identifier",
                                                        "src": "8565:6:16"
                                                    }
                                                ],
                                                "id": 4348,
                                                "name": "FunctionCall",
                                                "src": "8542:30:16"
                                            }
                                        ],
                                        "id": 4349,
                                        "name": "VariableDeclarationStatement",
                                        "src": "8517:55:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4354
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "amountsOut",
                                                    "scope": 4441,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "uint256[]",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "type": "uint256[]"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "uint256",
                                                                    "type": "uint256"
                                                                },
                                                                "id": 4352,
                                                                "name": "ElementaryTypeName",
                                                                "src": "8583:7:16"
                                                            }
                                                        ],
                                                        "id": 4353,
                                                        "name": "ArrayTypeName",
                                                        "src": "8583:9:16"
                                                    }
                                                ],
                                                "id": 4354,
                                                "name": "VariableDeclaration",
                                                "src": "8583:27:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256[] memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "type": "function (uint256) pure returns (uint256[] memory)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "type": "uint256[]"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint256",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 4355,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "8617:7:16"
                                                                    }
                                                                ],
                                                                "id": 4356,
                                                                "name": "ArrayTypeName",
                                                                "src": "8617:9:16"
                                                            }
                                                        ],
                                                        "id": 4357,
                                                        "name": "NewExpression",
                                                        "src": "8613:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "length",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4334,
                                                                    "type": "contract IERC20[] memory",
                                                                    "value": "tokens"
                                                                },
                                                                "id": 4358,
                                                                "name": "Identifier",
                                                                "src": "8627:6:16"
                                                            }
                                                        ],
                                                        "id": 4359,
                                                        "name": "MemberAccess",
                                                        "src": "8627:13:16"
                                                    }
                                                ],
                                                "id": 4360,
                                                "name": "FunctionCall",
                                                "src": "8613:28:16"
                                            }
                                        ],
                                        "id": 4361,
                                        "name": "VariableDeclarationStatement",
                                        "src": "8583:58:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4365
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "request",
                                                    "scope": 4441,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "struct IVault.ExitPoolRequest",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IVault.ExitPoolRequest",
                                                            "referencedDeclaration": 3490,
                                                            "type": "struct IVault.ExitPoolRequest"
                                                        },
                                                        "id": 4364,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "8652:22:16"
                                                    }
                                                ],
                                                "id": 4365,
                                                "name": "VariableDeclaration",
                                                "src": "8652:37:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": true,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "assets",
                                                        "minAmountsOut",
                                                        "userData",
                                                        "toInternalBalance"
                                                    ],
                                                    "tryCall": false,
                                                    "type": "struct IVault.ExitPoolRequest memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_array$_t_contract$_IAsset_$3127_$dyn_memory_ptr",
                                                                    "typeString": "contract IAsset[] memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                                    "typeString": "uint256[] memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "ExitPoolRequest",
                                                            "referencedDeclaration": 3490,
                                                            "type": "type(struct IVault.ExitPoolRequest storage pointer)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3688,
                                                                    "type": "type(contract IVault)",
                                                                    "value": "IVault"
                                                                },
                                                                "id": 4366,
                                                                "name": "Identifier",
                                                                "src": "8692:6:16"
                                                            }
                                                        ],
                                                        "id": 4367,
                                                        "name": "MemberAccess",
                                                        "src": "8692:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4345,
                                                            "type": "contract IAsset[] memory",
                                                            "value": "assets"
                                                        },
                                                        "id": 4368,
                                                        "name": "Identifier",
                                                        "src": "8738:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4354,
                                                            "type": "uint256[] memory",
                                                            "value": "amountsOut"
                                                        },
                                                        "id": 4369,
                                                        "name": "Identifier",
                                                        "src": "8774:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bytes memory",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_enum$_ExitKind_$11357",
                                                                            "typeString": "enum IMarginManager.ExitKind"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "member_name": "encode",
                                                                    "type": "function () pure returns (bytes memory)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -1,
                                                                            "type": "abi",
                                                                            "value": "abi"
                                                                        },
                                                                        "id": 4370,
                                                                        "name": "Identifier",
                                                                        "src": "8809:3:16"
                                                                    }
                                                                ],
                                                                "id": 4371,
                                                                "name": "MemberAccess",
                                                                "src": "8809:10:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "member_name": "EXACT_BPT_IN_FOR_TOKENS_OUT",
                                                                    "type": "enum IMarginManager.ExitKind"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 11357,
                                                                            "type": "type(enum IMarginManager.ExitKind)",
                                                                            "value": "ExitKind"
                                                                        },
                                                                        "id": 4372,
                                                                        "name": "Identifier",
                                                                        "src": "8820:8:16"
                                                                    }
                                                                ],
                                                                "id": 4373,
                                                                "name": "MemberAccess",
                                                                "src": "8820:36:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 4374,
                                                                "name": "Literal",
                                                                "src": "8858:1:16"
                                                            }
                                                        ],
                                                        "id": 4375,
                                                        "name": "FunctionCall",
                                                        "src": "8809:51:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "66616c7365",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "bool",
                                                            "type": "bool",
                                                            "value": "false"
                                                        },
                                                        "id": 4376,
                                                        "name": "Literal",
                                                        "src": "8894:5:16"
                                                    }
                                                ],
                                                "id": 4377,
                                                "name": "FunctionCall",
                                                "src": "8692:219:16"
                                            }
                                        ],
                                        "id": 4378,
                                        "name": "VariableDeclarationStatement",
                                        "src": "8652:259:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_struct$_ExitPoolRequest_$3490_memory_ptr",
                                                                    "typeString": "struct IVault.ExitPoolRequest memory"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "exitPool",
                                                            "referencedDeclaration": 3479,
                                                            "type": "function (bytes32,address,address payable,struct IVault.ExitPoolRequest memory) external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IVault",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3688,
                                                                            "type": "type(contract IVault)",
                                                                            "value": "IVault"
                                                                        },
                                                                        "id": 4379,
                                                                        "name": "Identifier",
                                                                        "src": "8931:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3714,
                                                                            "type": "address",
                                                                            "value": "_vault"
                                                                        },
                                                                        "id": 4380,
                                                                        "name": "Identifier",
                                                                        "src": "8938:6:16"
                                                                    }
                                                                ],
                                                                "id": 4381,
                                                                "name": "FunctionCall",
                                                                "src": "8931:14:16"
                                                            }
                                                        ],
                                                        "id": 4382,
                                                        "name": "MemberAccess",
                                                        "src": "8931:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4326,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4383,
                                                        "name": "Identifier",
                                                        "src": "8955:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4384,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "8963:7:16"
                                                                    }
                                                                ],
                                                                "id": 4385,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8963:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4386,
                                                                "name": "Identifier",
                                                                "src": "8971:4:16"
                                                            }
                                                        ],
                                                        "id": 4387,
                                                        "name": "FunctionCall",
                                                        "src": "8963:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address payable",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address payable)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "stateMutability": "payable"
                                                                        },
                                                                        "id": 4388,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "8978:8:16"
                                                                    }
                                                                ],
                                                                "id": 4389,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "8978:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                                    "typeString": "contract MarginIssueManager"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 4390,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "8986:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 4391,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "8986:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -28,
                                                                            "type": "contract MarginIssueManager",
                                                                            "value": "this"
                                                                        },
                                                                        "id": 4392,
                                                                        "name": "Identifier",
                                                                        "src": "8994:4:16"
                                                                    }
                                                                ],
                                                                "id": 4393,
                                                                "name": "FunctionCall",
                                                                "src": "8986:13:16"
                                                            }
                                                        ],
                                                        "id": 4394,
                                                        "name": "FunctionCall",
                                                        "src": "8978:22:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4365,
                                                            "type": "struct IVault.ExitPoolRequest memory",
                                                            "value": "request"
                                                        },
                                                        "id": 4395,
                                                        "name": "Identifier",
                                                        "src": "9002:7:16"
                                                    }
                                                ],
                                                "id": 4396,
                                                "name": "FunctionCall",
                                                "src": "8931:79:16"
                                            }
                                        ],
                                        "id": 4397,
                                        "name": "ExpressionStatement",
                                        "src": "8931:79:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3835,
                                                            "type": "function (bytes32,address,uint256)",
                                                            "value": "closures"
                                                        },
                                                        "id": 4398,
                                                        "name": "Identifier",
                                                        "src": "9026:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4326,
                                                            "type": "bytes32",
                                                            "value": "poolId"
                                                        },
                                                        "id": 4399,
                                                        "name": "Identifier",
                                                        "src": "9035:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4314,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4400,
                                                        "name": "Identifier",
                                                        "src": "9043:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 4401,
                                                                "name": "Identifier",
                                                                "src": "9053:5:16"
                                                            }
                                                        ],
                                                        "id": 4402,
                                                        "name": "MemberAccess",
                                                        "src": "9053:15:16"
                                                    }
                                                ],
                                                "id": 4403,
                                                "name": "FunctionCall",
                                                "src": "9026:43:16"
                                            }
                                        ],
                                        "id": 4404,
                                        "name": "EmitStatement",
                                        "src": "9021:48:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transfer",
                                                            "referencedDeclaration": 2887,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2938,
                                                                            "type": "type(contract IERC20)",
                                                                            "value": "IERC20"
                                                                        },
                                                                        "id": 4405,
                                                                        "name": "Identifier",
                                                                        "src": "9080:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4316,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4406,
                                                                        "name": "Identifier",
                                                                        "src": "9087:8:16"
                                                                    }
                                                                ],
                                                                "id": 4407,
                                                                "name": "FunctionCall",
                                                                "src": "9080:16:16"
                                                            }
                                                        ],
                                                        "id": 4408,
                                                        "name": "MemberAccess",
                                                        "src": "9080:25:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3743,
                                                                    "type": "mapping(bytes32 => address)",
                                                                    "value": "issuer"
                                                                },
                                                                "id": 4409,
                                                                "name": "Identifier",
                                                                "src": "9106:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4326,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 4410,
                                                                "name": "Identifier",
                                                                "src": "9113:6:16"
                                                            }
                                                        ],
                                                        "id": 4411,
                                                        "name": "IndexAccess",
                                                        "src": "9106:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "balanceOf",
                                                                    "referencedDeclaration": 2877,
                                                                    "type": "function (address) view external returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2938,
                                                                                    "type": "type(contract IERC20)",
                                                                                    "value": "IERC20"
                                                                                },
                                                                                "id": 4412,
                                                                                "name": "Identifier",
                                                                                "src": "9122:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4316,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4413,
                                                                                "name": "Identifier",
                                                                                "src": "9129:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4414,
                                                                        "name": "FunctionCall",
                                                                        "src": "9122:16:16"
                                                                    }
                                                                ],
                                                                "id": 4415,
                                                                "name": "MemberAccess",
                                                                "src": "9122:26:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                                    "typeString": "contract MarginIssueManager"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 4416,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "9149:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 4417,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "9149:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -28,
                                                                            "type": "contract MarginIssueManager",
                                                                            "value": "this"
                                                                        },
                                                                        "id": 4418,
                                                                        "name": "Identifier",
                                                                        "src": "9157:4:16"
                                                                    }
                                                                ],
                                                                "id": 4419,
                                                                "name": "FunctionCall",
                                                                "src": "9149:13:16"
                                                            }
                                                        ],
                                                        "id": 4420,
                                                        "name": "FunctionCall",
                                                        "src": "9122:41:16"
                                                    }
                                                ],
                                                "id": 4421,
                                                "name": "FunctionCall",
                                                "src": "9080:84:16"
                                            }
                                        ],
                                        "id": 4422,
                                        "name": "ExpressionStatement",
                                        "src": "9080:84:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transfer",
                                                            "referencedDeclaration": 2887,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2938,
                                                                            "type": "type(contract IERC20)",
                                                                            "value": "IERC20"
                                                                        },
                                                                        "id": 4423,
                                                                        "name": "Identifier",
                                                                        "src": "9175:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4314,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4424,
                                                                        "name": "Identifier",
                                                                        "src": "9182:8:16"
                                                                    }
                                                                ],
                                                                "id": 4425,
                                                                "name": "FunctionCall",
                                                                "src": "9175:16:16"
                                                            }
                                                        ],
                                                        "id": 4426,
                                                        "name": "MemberAccess",
                                                        "src": "9175:25:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3743,
                                                                    "type": "mapping(bytes32 => address)",
                                                                    "value": "issuer"
                                                                },
                                                                "id": 4427,
                                                                "name": "Identifier",
                                                                "src": "9201:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4326,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 4428,
                                                                "name": "Identifier",
                                                                "src": "9208:6:16"
                                                            }
                                                        ],
                                                        "id": 4429,
                                                        "name": "IndexAccess",
                                                        "src": "9201:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "balanceOf",
                                                                    "referencedDeclaration": 2877,
                                                                    "type": "function (address) view external returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IERC20",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2938,
                                                                                    "type": "type(contract IERC20)",
                                                                                    "value": "IERC20"
                                                                                },
                                                                                "id": 4430,
                                                                                "name": "Identifier",
                                                                                "src": "9217:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4314,
                                                                                    "type": "address",
                                                                                    "value": "security"
                                                                                },
                                                                                "id": 4431,
                                                                                "name": "Identifier",
                                                                                "src": "9224:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4432,
                                                                        "name": "FunctionCall",
                                                                        "src": "9217:16:16"
                                                                    }
                                                                ],
                                                                "id": 4433,
                                                                "name": "MemberAccess",
                                                                "src": "9217:26:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                                    "typeString": "contract MarginIssueManager"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "address"
                                                                                },
                                                                                "id": 4434,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "9244:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 4435,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "9244:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -28,
                                                                            "type": "contract MarginIssueManager",
                                                                            "value": "this"
                                                                        },
                                                                        "id": 4436,
                                                                        "name": "Identifier",
                                                                        "src": "9252:4:16"
                                                                    }
                                                                ],
                                                                "id": 4437,
                                                                "name": "FunctionCall",
                                                                "src": "9244:13:16"
                                                            }
                                                        ],
                                                        "id": 4438,
                                                        "name": "FunctionCall",
                                                        "src": "9217:41:16"
                                                    }
                                                ],
                                                "id": 4439,
                                                "name": "FunctionCall",
                                                "src": "9175:84:16"
                                            }
                                        ],
                                        "id": 4440,
                                        "name": "ExpressionStatement",
                                        "src": "9175:84:16"
                                    }
                                ],
                                "id": 4441,
                                "name": "Block",
                                "src": "8252:1015:16"
                            }
                        ],
                        "id": 4442,
                        "name": "FunctionDefinition",
                        "src": "8144:1123:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11452
                            ],
                            "functionSelector": "59e7e4b1",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "offerCollateral",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4450,
                                "name": "OverrideSpecifier",
                                "src": "9357:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashToken",
                                            "scope": 4562,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4443,
                                                "name": "ElementaryTypeName",
                                                "src": "9304:7:16"
                                            }
                                        ],
                                        "id": 4444,
                                        "name": "VariableDeclaration",
                                        "src": "9304:17:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amount",
                                            "scope": 4562,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4445,
                                                "name": "ElementaryTypeName",
                                                "src": "9323:7:16"
                                            }
                                        ],
                                        "id": 4446,
                                        "name": "VariableDeclaration",
                                        "src": "9323:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4562,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4447,
                                                "name": "ElementaryTypeName",
                                                "src": "9339:7:16"
                                            }
                                        ],
                                        "id": 4448,
                                        "name": "VariableDeclaration",
                                        "src": "9339:16:16"
                                    }
                                ],
                                "id": 4449,
                                "name": "ParameterList",
                                "src": "9303:53:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4451,
                                "name": "ParameterList",
                                "src": "9375:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transferFrom",
                                                            "referencedDeclaration": 2919,
                                                            "type": "function (address,address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2938,
                                                                            "type": "type(contract IERC20)",
                                                                            "value": "IERC20"
                                                                        },
                                                                        "id": 4452,
                                                                        "name": "Identifier",
                                                                        "src": "9386:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4444,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4453,
                                                                        "name": "Identifier",
                                                                        "src": "9393:9:16"
                                                                    }
                                                                ],
                                                                "id": 4454,
                                                                "name": "FunctionCall",
                                                                "src": "9386:17:16"
                                                            }
                                                        ],
                                                        "id": 4455,
                                                        "name": "MemberAccess",
                                                        "src": "9386:30:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4456,
                                                                "name": "Identifier",
                                                                "src": "9417:3:16"
                                                            }
                                                        ],
                                                        "id": 4457,
                                                        "name": "MemberAccess",
                                                        "src": "9417:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 4458,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "9429:7:16"
                                                                    }
                                                                ],
                                                                "id": 4459,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "9429:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 4460,
                                                                "name": "Identifier",
                                                                "src": "9437:4:16"
                                                            }
                                                        ],
                                                        "id": 4461,
                                                        "name": "FunctionCall",
                                                        "src": "9429:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4446,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 4462,
                                                        "name": "Identifier",
                                                        "src": "9444:6:16"
                                                    }
                                                ],
                                                "id": 4463,
                                                "name": "FunctionCall",
                                                "src": "9386:65:16"
                                            }
                                        ],
                                        "id": 4464,
                                        "name": "ExpressionStatement",
                                        "src": "9386:65:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4466
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "scalingFactor",
                                                    "scope": 4561,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 4465,
                                                        "name": "ElementaryTypeName",
                                                        "src": "9462:7:16"
                                                    }
                                                ],
                                                "id": 4466,
                                                "name": "VariableDeclaration",
                                                "src": "9462:21:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6346,
                                                            "type": "function (contract IERC20) view returns (uint256)",
                                                            "value": "_computeScalingFactor"
                                                        },
                                                        "id": 4467,
                                                        "name": "Identifier",
                                                        "src": "9486:21:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "contract IERC20",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2938,
                                                                    "type": "type(contract IERC20)",
                                                                    "value": "IERC20"
                                                                },
                                                                "id": 4468,
                                                                "name": "Identifier",
                                                                "src": "9508:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4444,
                                                                    "type": "address",
                                                                    "value": "cashToken"
                                                                },
                                                                "id": 4469,
                                                                "name": "Identifier",
                                                                "src": "9515:9:16"
                                                            }
                                                        ],
                                                        "id": 4470,
                                                        "name": "FunctionCall",
                                                        "src": "9508:17:16"
                                                    }
                                                ],
                                                "id": 4471,
                                                "name": "FunctionCall",
                                                "src": "9486:40:16"
                                            }
                                        ],
                                        "id": 4472,
                                        "name": "VariableDeclarationStatement",
                                        "src": "9462:64:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4446,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 4473,
                                                        "name": "Identifier",
                                                        "src": "9537:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6362,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)",
                                                                    "value": "_upscale"
                                                                },
                                                                "id": 4474,
                                                                "name": "Identifier",
                                                                "src": "9546:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4446,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 4475,
                                                                "name": "Identifier",
                                                                "src": "9555:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4466,
                                                                    "type": "uint256",
                                                                    "value": "scalingFactor"
                                                                },
                                                                "id": 4476,
                                                                "name": "Identifier",
                                                                "src": "9563:13:16"
                                                            }
                                                        ],
                                                        "id": 4477,
                                                        "name": "FunctionCall",
                                                        "src": "9546:31:16"
                                                    }
                                                ],
                                                "id": 4478,
                                                "name": "Assignment",
                                                "src": "9537:40:16"
                                            }
                                        ],
                                        "id": 4479,
                                        "name": "ExpressionStatement",
                                        "src": "9537:40:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "int256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => int256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3755,
                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                            "value": "collateralBalance"
                                                                        },
                                                                        "id": 4480,
                                                                        "name": "Identifier",
                                                                        "src": "9588:17:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4481,
                                                                                "name": "Identifier",
                                                                                "src": "9606:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 4482,
                                                                        "name": "MemberAccess",
                                                                        "src": "9606:10:16"
                                                                    }
                                                                ],
                                                                "id": 4484,
                                                                "name": "IndexAccess",
                                                                "src": "9588:29:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4444,
                                                                    "type": "address",
                                                                    "value": "cashToken"
                                                                },
                                                                "id": 4483,
                                                                "name": "Identifier",
                                                                "src": "9618:9:16"
                                                            }
                                                        ],
                                                        "id": 4485,
                                                        "name": "IndexAccess",
                                                        "src": "9588:40:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "int256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 2150,
                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2367,
                                                                            "type": "type(library Math)",
                                                                            "value": "Math"
                                                                        },
                                                                        "id": 4486,
                                                                        "name": "Identifier",
                                                                        "src": "9631:4:16"
                                                                    }
                                                                ],
                                                                "id": 4487,
                                                                "name": "MemberAccess",
                                                                "src": "9631:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 4488,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "9640:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 4489,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "9640:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4446,
                                                                            "type": "uint256",
                                                                            "value": "amount"
                                                                        },
                                                                        "id": 4490,
                                                                        "name": "Identifier",
                                                                        "src": "9644:6:16"
                                                                    }
                                                                ],
                                                                "id": 4491,
                                                                "name": "FunctionCall",
                                                                "src": "9640:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 4492,
                                                                                "name": "Identifier",
                                                                                "src": "9653:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 4493,
                                                                                        "name": "Identifier",
                                                                                        "src": "9671:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4494,
                                                                                "name": "MemberAccess",
                                                                                "src": "9671:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 4495,
                                                                        "name": "IndexAccess",
                                                                        "src": "9653:29:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4444,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4496,
                                                                        "name": "Identifier",
                                                                        "src": "9683:9:16"
                                                                    }
                                                                ],
                                                                "id": 4497,
                                                                "name": "IndexAccess",
                                                                "src": "9653:40:16"
                                                            }
                                                        ],
                                                        "id": 4498,
                                                        "name": "FunctionCall",
                                                        "src": "9631:63:16"
                                                    }
                                                ],
                                                "id": 4499,
                                                "name": "Assignment",
                                                "src": "9588:106:16"
                                            }
                                        ],
                                        "id": 4500,
                                        "name": "ExpressionStatement",
                                        "src": "9588:106:16"
                                    },
                                    {
                                        "attributes": {},
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3768,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "traderIndex"
                                                                },
                                                                "id": 4501,
                                                                "name": "Identifier",
                                                                "src": "9708:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 4502,
                                                                        "name": "Identifier",
                                                                        "src": "9720:3:16"
                                                                    }
                                                                ],
                                                                "id": 4503,
                                                                "name": "MemberAccess",
                                                                "src": "9720:10:16"
                                                            }
                                                        ],
                                                        "id": 4504,
                                                        "name": "IndexAccess",
                                                        "src": "9708:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 4505,
                                                        "name": "Literal",
                                                        "src": "9733:1:16"
                                                    }
                                                ],
                                                "id": 4506,
                                                "name": "BinaryOperation",
                                                "src": "9708:26:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address_payable",
                                                                                    "typeString": "address payable"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "push",
                                                                            "type": "function (address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3764,
                                                                                    "type": "address[] storage ref",
                                                                                    "value": "traders"
                                                                                },
                                                                                "id": 4507,
                                                                                "name": "Identifier",
                                                                                "src": "9750:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 4509,
                                                                        "name": "MemberAccess",
                                                                        "src": "9750:12:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4510,
                                                                                "name": "Identifier",
                                                                                "src": "9763:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 4511,
                                                                        "name": "MemberAccess",
                                                                        "src": "9763:10:16"
                                                                    }
                                                                ],
                                                                "id": 4512,
                                                                "name": "FunctionCall",
                                                                "src": "9750:24:16"
                                                            }
                                                        ],
                                                        "id": 4513,
                                                        "name": "ExpressionStatement",
                                                        "src": "9750:24:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3768,
                                                                                    "type": "mapping(address => uint256)",
                                                                                    "value": "traderIndex"
                                                                                },
                                                                                "id": 4514,
                                                                                "name": "Identifier",
                                                                                "src": "9789:11:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 4515,
                                                                                        "name": "Identifier",
                                                                                        "src": "9801:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4516,
                                                                                "name": "MemberAccess",
                                                                                "src": "9801:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 4517,
                                                                        "name": "IndexAccess",
                                                                        "src": "9789:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "length",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3764,
                                                                                    "type": "address[] storage ref",
                                                                                    "value": "traders"
                                                                                },
                                                                                "id": 4518,
                                                                                "name": "Identifier",
                                                                                "src": "9815:7:16"
                                                                            }
                                                                        ],
                                                                        "id": 4519,
                                                                        "name": "MemberAccess",
                                                                        "src": "9815:14:16"
                                                                    }
                                                                ],
                                                                "id": 4520,
                                                                "name": "Assignment",
                                                                "src": "9789:40:16"
                                                            }
                                                        ],
                                                        "id": 4521,
                                                        "name": "ExpressionStatement",
                                                        "src": "9789:40:16"
                                                    }
                                                ],
                                                "id": 4522,
                                                "name": "Block",
                                                "src": "9735:106:16"
                                            }
                                        ],
                                        "id": 4523,
                                        "name": "IfStatement",
                                        "src": "9705:136:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4525
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolId",
                                                    "scope": 4561,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 4524,
                                                        "name": "ElementaryTypeName",
                                                        "src": "9851:7:16"
                                                    }
                                                ],
                                                "id": 4525,
                                                "name": "VariableDeclaration",
                                                "src": "9851:14:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "bytes32"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3739,
                                                            "type": "mapping(address => bytes32)",
                                                            "value": "poolSecurity"
                                                        },
                                                        "id": 4526,
                                                        "name": "Identifier",
                                                        "src": "9868:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4448,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4527,
                                                        "name": "Identifier",
                                                        "src": "9881:8:16"
                                                    }
                                                ],
                                                "id": 4528,
                                                "name": "IndexAccess",
                                                "src": "9868:22:16"
                                            }
                                        ],
                                        "id": 4529,
                                        "name": "VariableDeclarationStatement",
                                        "src": "9851:39:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3761,
                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                            "value": "collateralAmount"
                                                                        },
                                                                        "id": 4530,
                                                                        "name": "Identifier",
                                                                        "src": "9901:16:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4525,
                                                                            "type": "bytes32",
                                                                            "value": "poolId"
                                                                        },
                                                                        "id": 4531,
                                                                        "name": "Identifier",
                                                                        "src": "9918:6:16"
                                                                    }
                                                                ],
                                                                "id": 4533,
                                                                "name": "IndexAccess",
                                                                "src": "9901:24:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4444,
                                                                    "type": "address",
                                                                    "value": "cashToken"
                                                                },
                                                                "id": 4532,
                                                                "name": "Identifier",
                                                                "src": "9926:9:16"
                                                            }
                                                        ],
                                                        "id": 4534,
                                                        "name": "IndexAccess",
                                                        "src": "9901:35:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 2109,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2367,
                                                                            "type": "type(library Math)",
                                                                            "value": "Math"
                                                                        },
                                                                        "id": 4535,
                                                                        "name": "Identifier",
                                                                        "src": "9939:4:16"
                                                                    }
                                                                ],
                                                                "id": 4536,
                                                                "name": "MemberAccess",
                                                                "src": "9939:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3761,
                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                    "value": "collateralAmount"
                                                                                },
                                                                                "id": 4537,
                                                                                "name": "Identifier",
                                                                                "src": "9948:16:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4525,
                                                                                    "type": "bytes32",
                                                                                    "value": "poolId"
                                                                                },
                                                                                "id": 4538,
                                                                                "name": "Identifier",
                                                                                "src": "9965:6:16"
                                                                            }
                                                                        ],
                                                                        "id": 4539,
                                                                        "name": "IndexAccess",
                                                                        "src": "9948:24:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4444,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4540,
                                                                        "name": "Identifier",
                                                                        "src": "9973:9:16"
                                                                    }
                                                                ],
                                                                "id": 4541,
                                                                "name": "IndexAccess",
                                                                "src": "9948:35:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4446,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 4542,
                                                                "name": "Identifier",
                                                                "src": "9985:6:16"
                                                            }
                                                        ],
                                                        "id": 4543,
                                                        "name": "FunctionCall",
                                                        "src": "9939:53:16"
                                                    }
                                                ],
                                                "id": 4544,
                                                "name": "Assignment",
                                                "src": "9901:91:16"
                                            }
                                        ],
                                        "id": 4545,
                                        "name": "ExpressionStatement",
                                        "src": "9901:91:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_28bf0e7ef8ed6b6ff710a823b50581926b96df560eed44922320b90d4fca37b4",
                                                                    "typeString": "literal_string \"offer\""
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3855,
                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                            "value": "collateral"
                                                        },
                                                        "id": 4546,
                                                        "name": "Identifier",
                                                        "src": "10008:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "6f66666572",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"offer\"",
                                                            "value": "offer"
                                                        },
                                                        "id": 4547,
                                                        "name": "Literal",
                                                        "src": "10019:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sender",
                                                            "type": "address payable"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -15,
                                                                    "type": "msg",
                                                                    "value": "msg"
                                                                },
                                                                "id": 4548,
                                                                "name": "Identifier",
                                                                "src": "10028:3:16"
                                                            }
                                                        ],
                                                        "id": 4549,
                                                        "name": "MemberAccess",
                                                        "src": "10028:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4444,
                                                            "type": "address",
                                                            "value": "cashToken"
                                                        },
                                                        "id": 4550,
                                                        "name": "Identifier",
                                                        "src": "10040:9:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => int256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3755,
                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                            "value": "collateralBalance"
                                                                        },
                                                                        "id": 4551,
                                                                        "name": "Identifier",
                                                                        "src": "10051:17:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sender",
                                                                            "type": "address payable"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -15,
                                                                                    "type": "msg",
                                                                                    "value": "msg"
                                                                                },
                                                                                "id": 4552,
                                                                                "name": "Identifier",
                                                                                "src": "10069:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 4553,
                                                                        "name": "MemberAccess",
                                                                        "src": "10069:10:16"
                                                                    }
                                                                ],
                                                                "id": 4554,
                                                                "name": "IndexAccess",
                                                                "src": "10051:29:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4444,
                                                                    "type": "address",
                                                                    "value": "cashToken"
                                                                },
                                                                "id": 4555,
                                                                "name": "Identifier",
                                                                "src": "10081:9:16"
                                                            }
                                                        ],
                                                        "id": 4556,
                                                        "name": "IndexAccess",
                                                        "src": "10051:40:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 4557,
                                                                "name": "Identifier",
                                                                "src": "10093:5:16"
                                                            }
                                                        ],
                                                        "id": 4558,
                                                        "name": "MemberAccess",
                                                        "src": "10093:15:16"
                                                    }
                                                ],
                                                "id": 4559,
                                                "name": "FunctionCall",
                                                "src": "10008:101:16"
                                            }
                                        ],
                                        "id": 4560,
                                        "name": "EmitStatement",
                                        "src": "10003:106:16"
                                    }
                                ],
                                "id": 4561,
                                "name": "Block",
                                "src": "9375:742:16"
                            }
                        ],
                        "id": 4562,
                        "name": "FunctionDefinition",
                        "src": "9279:838:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11461
                            ],
                            "functionSelector": "97db1a92",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "sendCollateral",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4570,
                                "name": "OverrideSpecifier",
                                "src": "10202:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashToken",
                                            "scope": 4621,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4563,
                                                "name": "ElementaryTypeName",
                                                "src": "10149:7:16"
                                            }
                                        ],
                                        "id": 4564,
                                        "name": "VariableDeclaration",
                                        "src": "10149:17:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amount",
                                            "scope": 4621,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4565,
                                                "name": "ElementaryTypeName",
                                                "src": "10168:7:16"
                                            }
                                        ],
                                        "id": 4566,
                                        "name": "VariableDeclaration",
                                        "src": "10168:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4621,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4567,
                                                "name": "ElementaryTypeName",
                                                "src": "10184:7:16"
                                            }
                                        ],
                                        "id": 4568,
                                        "name": "VariableDeclaration",
                                        "src": "10184:16:16"
                                    }
                                ],
                                "id": 4569,
                                "name": "ParameterList",
                                "src": "10148:53:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4576,
                                "name": "ParameterList",
                                "src": "10258:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3893,
                                            "type": "modifier (address,address)",
                                            "value": "onlyIssueManager"
                                        },
                                        "id": 4571,
                                        "name": "Identifier",
                                        "src": "10220:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 4572,
                                                "name": "Identifier",
                                                "src": "10237:3:16"
                                            }
                                        ],
                                        "id": 4573,
                                        "name": "MemberAccess",
                                        "src": "10237:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 4568,
                                            "type": "address",
                                            "value": "security"
                                        },
                                        "id": 4574,
                                        "name": "Identifier",
                                        "src": "10249:8:16"
                                    }
                                ],
                                "id": 4575,
                                "name": "ModifierInvocation",
                                "src": "10220:38:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4578
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolId",
                                                    "scope": 4620,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 4577,
                                                        "name": "ElementaryTypeName",
                                                        "src": "10269:7:16"
                                                    }
                                                ],
                                                "id": 4578,
                                                "name": "VariableDeclaration",
                                                "src": "10269:14:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "bytes32"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3739,
                                                            "type": "mapping(address => bytes32)",
                                                            "value": "poolSecurity"
                                                        },
                                                        "id": 4579,
                                                        "name": "Identifier",
                                                        "src": "10286:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4568,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 4580,
                                                        "name": "Identifier",
                                                        "src": "10299:8:16"
                                                    }
                                                ],
                                                "id": 4581,
                                                "name": "IndexAccess",
                                                "src": "10286:22:16"
                                            }
                                        ],
                                        "id": 4582,
                                        "name": "VariableDeclarationStatement",
                                        "src": "10269:39:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_e1870e947561ed0844e83bc40c37868701467692f8abb79541ab350669325d2e",
                                                                    "typeString": "literal_string \"Insufficient collateral for pool\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 4583,
                                                        "name": "Identifier",
                                                        "src": "10319:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": ">=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3761,
                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                    "value": "collateralAmount"
                                                                                },
                                                                                "id": 4584,
                                                                                "name": "Identifier",
                                                                                "src": "10327:16:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4578,
                                                                                    "type": "bytes32",
                                                                                    "value": "poolId"
                                                                                },
                                                                                "id": 4585,
                                                                                "name": "Identifier",
                                                                                "src": "10344:6:16"
                                                                            }
                                                                        ],
                                                                        "id": 4586,
                                                                        "name": "IndexAccess",
                                                                        "src": "10327:24:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4564,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4587,
                                                                        "name": "Identifier",
                                                                        "src": "10352:9:16"
                                                                    }
                                                                ],
                                                                "id": 4588,
                                                                "name": "IndexAccess",
                                                                "src": "10327:35:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4566,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 4589,
                                                                "name": "Identifier",
                                                                "src": "10366:6:16"
                                                            }
                                                        ],
                                                        "id": 4590,
                                                        "name": "BinaryOperation",
                                                        "src": "10327:45:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "496e73756666696369656e7420636f6c6c61746572616c20666f7220706f6f6c",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Insufficient collateral for pool\"",
                                                            "value": "Insufficient collateral for pool"
                                                        },
                                                        "id": 4591,
                                                        "name": "Literal",
                                                        "src": "10374:34:16"
                                                    }
                                                ],
                                                "id": 4592,
                                                "name": "FunctionCall",
                                                "src": "10319:90:16"
                                            }
                                        ],
                                        "id": 4593,
                                        "name": "ExpressionStatement",
                                        "src": "10319:90:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "mapping(address => uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3761,
                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                            "value": "collateralAmount"
                                                                        },
                                                                        "id": 4594,
                                                                        "name": "Identifier",
                                                                        "src": "10420:16:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4578,
                                                                            "type": "bytes32",
                                                                            "value": "poolId"
                                                                        },
                                                                        "id": 4595,
                                                                        "name": "Identifier",
                                                                        "src": "10437:6:16"
                                                                    }
                                                                ],
                                                                "id": 4597,
                                                                "name": "IndexAccess",
                                                                "src": "10420:24:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4564,
                                                                    "type": "address",
                                                                    "value": "cashToken"
                                                                },
                                                                "id": 4596,
                                                                "name": "Identifier",
                                                                "src": "10445:9:16"
                                                            }
                                                        ],
                                                        "id": 4598,
                                                        "name": "IndexAccess",
                                                        "src": "10420:35:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 2177,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2367,
                                                                            "type": "type(library Math)",
                                                                            "value": "Math"
                                                                        },
                                                                        "id": 4599,
                                                                        "name": "Identifier",
                                                                        "src": "10458:4:16"
                                                                    }
                                                                ],
                                                                "id": 4600,
                                                                "name": "MemberAccess",
                                                                "src": "10458:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3761,
                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                    "value": "collateralAmount"
                                                                                },
                                                                                "id": 4601,
                                                                                "name": "Identifier",
                                                                                "src": "10467:16:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4578,
                                                                                    "type": "bytes32",
                                                                                    "value": "poolId"
                                                                                },
                                                                                "id": 4602,
                                                                                "name": "Identifier",
                                                                                "src": "10484:6:16"
                                                                            }
                                                                        ],
                                                                        "id": 4603,
                                                                        "name": "IndexAccess",
                                                                        "src": "10467:24:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4564,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4604,
                                                                        "name": "Identifier",
                                                                        "src": "10492:9:16"
                                                                    }
                                                                ],
                                                                "id": 4605,
                                                                "name": "IndexAccess",
                                                                "src": "10467:35:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4566,
                                                                    "type": "uint256",
                                                                    "value": "amount"
                                                                },
                                                                "id": 4606,
                                                                "name": "Identifier",
                                                                "src": "10504:6:16"
                                                            }
                                                        ],
                                                        "id": 4607,
                                                        "name": "FunctionCall",
                                                        "src": "10458:53:16"
                                                    }
                                                ],
                                                "id": 4608,
                                                "name": "Assignment",
                                                "src": "10420:91:16"
                                            }
                                        ],
                                        "id": 4609,
                                        "name": "ExpressionStatement",
                                        "src": "10420:91:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transfer",
                                                            "referencedDeclaration": 2887,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2938,
                                                                            "type": "type(contract IERC20)",
                                                                            "value": "IERC20"
                                                                        },
                                                                        "id": 4610,
                                                                        "name": "Identifier",
                                                                        "src": "10522:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4564,
                                                                            "type": "address",
                                                                            "value": "cashToken"
                                                                        },
                                                                        "id": 4611,
                                                                        "name": "Identifier",
                                                                        "src": "10529:9:16"
                                                                    }
                                                                ],
                                                                "id": 4612,
                                                                "name": "FunctionCall",
                                                                "src": "10522:17:16"
                                                            }
                                                        ],
                                                        "id": 4613,
                                                        "name": "MemberAccess",
                                                        "src": "10522:26:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3743,
                                                                    "type": "mapping(bytes32 => address)",
                                                                    "value": "issuer"
                                                                },
                                                                "id": 4614,
                                                                "name": "Identifier",
                                                                "src": "10549:6:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4578,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 4615,
                                                                "name": "Identifier",
                                                                "src": "10556:6:16"
                                                            }
                                                        ],
                                                        "id": 4616,
                                                        "name": "IndexAccess",
                                                        "src": "10549:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4566,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 4617,
                                                        "name": "Identifier",
                                                        "src": "10565:6:16"
                                                    }
                                                ],
                                                "id": 4618,
                                                "name": "FunctionCall",
                                                "src": "10522:50:16"
                                            }
                                        ],
                                        "id": 4619,
                                        "name": "ExpressionStatement",
                                        "src": "10522:50:16"
                                    }
                                ],
                                "id": 4620,
                                "name": "Block",
                                "src": "10258:322:16"
                            }
                        ],
                        "id": 4621,
                        "name": "FunctionDefinition",
                        "src": "10125:455:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11500
                            ],
                            "functionSelector": "6f943a09",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getCollateral",
                            "scope": 6363,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4627,
                                "name": "OverrideSpecifier",
                                "src": "10654:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "poolId",
                                            "scope": 4638,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 4622,
                                                "name": "ElementaryTypeName",
                                                "src": "10611:7:16"
                                            }
                                        ],
                                        "id": 4623,
                                        "name": "VariableDeclaration",
                                        "src": "10611:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4638,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4624,
                                                "name": "ElementaryTypeName",
                                                "src": "10627:7:16"
                                            }
                                        ],
                                        "id": 4625,
                                        "name": "VariableDeclaration",
                                        "src": "10627:16:16"
                                    }
                                ],
                                "id": 4626,
                                "name": "ParameterList",
                                "src": "10610:34:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4638,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4628,
                                                "name": "ElementaryTypeName",
                                                "src": "10676:7:16"
                                            }
                                        ],
                                        "id": 4629,
                                        "name": "VariableDeclaration",
                                        "src": "10676:7:16"
                                    }
                                ],
                                "id": 4630,
                                "name": "ParameterList",
                                "src": "10675:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4630
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "mapping(address => uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3761,
                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                    "value": "collateralAmount"
                                                                },
                                                                "id": 4631,
                                                                "name": "Identifier",
                                                                "src": "10702:16:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4623,
                                                                    "type": "bytes32",
                                                                    "value": "poolId"
                                                                },
                                                                "id": 4632,
                                                                "name": "Identifier",
                                                                "src": "10719:6:16"
                                                            }
                                                        ],
                                                        "id": 4633,
                                                        "name": "IndexAccess",
                                                        "src": "10702:24:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4625,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4634,
                                                        "name": "Identifier",
                                                        "src": "10727:8:16"
                                                    }
                                                ],
                                                "id": 4635,
                                                "name": "IndexAccess",
                                                "src": "10702:34:16"
                                            }
                                        ],
                                        "id": 4636,
                                        "name": "Return",
                                        "src": "10695:41:16"
                                    }
                                ],
                                "id": 4637,
                                "name": "Block",
                                "src": "10684:60:16"
                            }
                        ],
                        "id": 4638,
                        "name": "FunctionDefinition",
                        "src": "10588:156:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11509
                            ],
                            "functionSelector": "a55e8668",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getUserCollateral",
                            "scope": 6363,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4644,
                                "name": "OverrideSpecifier",
                                "src": "10821:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "party",
                                            "scope": 4655,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4639,
                                                "name": "ElementaryTypeName",
                                                "src": "10779:7:16"
                                            }
                                        ],
                                        "id": 4640,
                                        "name": "VariableDeclaration",
                                        "src": "10779:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4655,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4641,
                                                "name": "ElementaryTypeName",
                                                "src": "10794:7:16"
                                            }
                                        ],
                                        "id": 4642,
                                        "name": "VariableDeclaration",
                                        "src": "10794:16:16"
                                    }
                                ],
                                "id": 4643,
                                "name": "ParameterList",
                                "src": "10778:33:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4655,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 4645,
                                                "name": "ElementaryTypeName",
                                                "src": "10843:6:16"
                                            }
                                        ],
                                        "id": 4646,
                                        "name": "VariableDeclaration",
                                        "src": "10843:6:16"
                                    }
                                ],
                                "id": 4647,
                                "name": "ParameterList",
                                "src": "10842:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4647
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "int256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "mapping(address => int256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3755,
                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                    "value": "collateralBalance"
                                                                },
                                                                "id": 4648,
                                                                "name": "Identifier",
                                                                "src": "10868:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4640,
                                                                    "type": "address",
                                                                    "value": "party"
                                                                },
                                                                "id": 4649,
                                                                "name": "Identifier",
                                                                "src": "10886:5:16"
                                                            }
                                                        ],
                                                        "id": 4650,
                                                        "name": "IndexAccess",
                                                        "src": "10868:24:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4642,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4651,
                                                        "name": "Identifier",
                                                        "src": "10893:8:16"
                                                    }
                                                ],
                                                "id": 4652,
                                                "name": "IndexAccess",
                                                "src": "10868:34:16"
                                            }
                                        ],
                                        "id": 4653,
                                        "name": "Return",
                                        "src": "10861:41:16"
                                    }
                                ],
                                "id": 4654,
                                "name": "Block",
                                "src": "10850:60:16"
                            }
                        ],
                        "id": 4655,
                        "name": "FunctionDefinition",
                        "src": "10752:158:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11412
                            ],
                            "functionSelector": "2b06b510",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "onMatch",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4671,
                                "name": "OverrideSpecifier",
                                "src": "11113:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "party",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4656,
                                                "name": "ElementaryTypeName",
                                                "src": "10939:7:16"
                                            }
                                        ],
                                        "id": 4657,
                                        "name": "VariableDeclaration",
                                        "src": "10939:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "counterparty",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4658,
                                                "name": "ElementaryTypeName",
                                                "src": "10954:7:16"
                                            }
                                        ],
                                        "id": 4659,
                                        "name": "VariableDeclaration",
                                        "src": "10954:20:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "orderRef",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 4660,
                                                "name": "ElementaryTypeName",
                                                "src": "10976:7:16"
                                            }
                                        ],
                                        "id": 4661,
                                        "name": "VariableDeclaration",
                                        "src": "10976:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4662,
                                                "name": "ElementaryTypeName",
                                                "src": "10994:7:16"
                                            }
                                        ],
                                        "id": 4663,
                                        "name": "VariableDeclaration",
                                        "src": "10994:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityTraded",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4664,
                                                "name": "ElementaryTypeName",
                                                "src": "11012:7:16"
                                            }
                                        ],
                                        "id": 4665,
                                        "name": "VariableDeclaration",
                                        "src": "11012:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4666,
                                                "name": "ElementaryTypeName",
                                                "src": "11036:7:16"
                                            }
                                        ],
                                        "id": 4667,
                                        "name": "VariableDeclaration",
                                        "src": "11036:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cashTraded",
                                            "scope": 4863,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4668,
                                                "name": "ElementaryTypeName",
                                                "src": "11054:7:16"
                                            }
                                        ],
                                        "id": 4669,
                                        "name": "VariableDeclaration",
                                        "src": "11054:18:16"
                                    }
                                ],
                                "id": 4670,
                                "name": "ParameterList",
                                "src": "10938:135:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4676,
                                "name": "ParameterList",
                                "src": "11145:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3921,
                                            "type": "modifier (address)",
                                            "value": "onlyBridge"
                                        },
                                        "id": 4672,
                                        "name": "Identifier",
                                        "src": "11122:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 4673,
                                                "name": "Identifier",
                                                "src": "11133:3:16"
                                            }
                                        ],
                                        "id": 4674,
                                        "name": "MemberAccess",
                                        "src": "11133:10:16"
                                    }
                                ],
                                "id": 4675,
                                "name": "ModifierInvocation",
                                "src": "11122:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4680
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "order",
                                                    "scope": 4862,
                                                    "stateVariable": false,
                                                    "storageLocation": "memory",
                                                    "type": "struct IMarginOrder.order",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IMarginOrder.order",
                                                            "referencedDeclaration": 11545,
                                                            "type": "struct IMarginOrder.order"
                                                        },
                                                        "id": 4679,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "11156:18:16"
                                                    }
                                                ],
                                                "id": 4680,
                                                "name": "VariableDeclaration",
                                                "src": "11156:31:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "struct IMarginOrder.order memory",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getOrder",
                                                            "referencedDeclaration": 11572,
                                                            "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IMarginOrder",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 11607,
                                                                            "type": "type(contract IMarginOrder)",
                                                                            "value": "IMarginOrder"
                                                                        },
                                                                        "id": 4681,
                                                                        "name": "Identifier",
                                                                        "src": "11190:12:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "arguments": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "address",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        null
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "getOrderbook",
                                                                                    "referencedDeclaration": 11635,
                                                                                    "type": "function () view external returns (address)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IMarginTradingPool",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 11651,
                                                                                                    "type": "type(contract IMarginTradingPool)",
                                                                                                    "value": "IMarginTradingPool"
                                                                                                },
                                                                                                "id": 4682,
                                                                                                "name": "Identifier",
                                                                                                "src": "11203:18:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "address"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "mapping(address => address)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 3735,
                                                                                                                    "type": "mapping(address => mapping(address => address))",
                                                                                                                    "value": "pools"
                                                                                                                },
                                                                                                                "id": 4683,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "11222:5:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 4663,
                                                                                                                    "type": "address",
                                                                                                                    "value": "security"
                                                                                                                },
                                                                                                                "id": 4684,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "11228:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 4685,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "11222:15:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4667,
                                                                                                            "type": "address",
                                                                                                            "value": "currency"
                                                                                                        },
                                                                                                        "id": 4686,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11238:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4687,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "11222:25:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4688,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "11203:45:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4689,
                                                                                "name": "MemberAccess",
                                                                                "src": "11203:58:16"
                                                                            }
                                                                        ],
                                                                        "id": 4690,
                                                                        "name": "FunctionCall",
                                                                        "src": "11203:60:16"
                                                                    }
                                                                ],
                                                                "id": 4691,
                                                                "name": "FunctionCall",
                                                                "src": "11190:74:16"
                                                            }
                                                        ],
                                                        "id": 4692,
                                                        "name": "MemberAccess",
                                                        "src": "11190:83:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4661,
                                                            "type": "bytes32",
                                                            "value": "orderRef"
                                                        },
                                                        "id": 4693,
                                                        "name": "Identifier",
                                                        "src": "11274:8:16"
                                                    }
                                                ],
                                                "id": 4694,
                                                "name": "FunctionCall",
                                                "src": "11190:93:16"
                                            }
                                        ],
                                        "id": 4695,
                                        "name": "VariableDeclarationStatement",
                                        "src": "11156:127:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                4697
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "marginCollateral",
                                                    "scope": 4862,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 4696,
                                                        "name": "ElementaryTypeName",
                                                        "src": "11294:7:16"
                                                    }
                                                ],
                                                "id": 4697,
                                                "name": "VariableDeclaration",
                                                "src": "11294:24:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "add",
                                                            "referencedDeclaration": 2109,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2367,
                                                                    "type": "type(library Math)",
                                                                    "value": "Math"
                                                                },
                                                                "id": 4698,
                                                                "name": "Identifier",
                                                                "src": "11321:4:16"
                                                            }
                                                        ],
                                                        "id": 4699,
                                                        "name": "MemberAccess",
                                                        "src": "11321:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "mulDown",
                                                                    "referencedDeclaration": 537,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 780,
                                                                            "type": "type(library FixedPoint)",
                                                                            "value": "FixedPoint"
                                                                        },
                                                                        "id": 4700,
                                                                        "name": "Identifier",
                                                                        "src": "11330:10:16"
                                                                    }
                                                                ],
                                                                "id": 4701,
                                                                "name": "MemberAccess",
                                                                "src": "11330:18:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4669,
                                                                    "type": "uint256",
                                                                    "value": "cashTraded"
                                                                },
                                                                "id": 4702,
                                                                "name": "Identifier",
                                                                "src": "11349:10:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "getMargin",
                                                                            "referencedDeclaration": 11640,
                                                                            "type": "function () view external returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract IMarginTradingPool",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 11651,
                                                                                            "type": "type(contract IMarginTradingPool)",
                                                                                            "value": "IMarginTradingPool"
                                                                                        },
                                                                                        "id": 4703,
                                                                                        "name": "Identifier",
                                                                                        "src": "11361:18:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => address)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3735,
                                                                                                            "type": "mapping(address => mapping(address => address))",
                                                                                                            "value": "pools"
                                                                                                        },
                                                                                                        "id": 4704,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11380:5:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4663,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 4705,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11386:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4706,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "11380:15:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4667,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4707,
                                                                                                "name": "Identifier",
                                                                                                "src": "11396:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4708,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "11380:25:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4709,
                                                                                "name": "FunctionCall",
                                                                                "src": "11361:45:16"
                                                                            }
                                                                        ],
                                                                        "id": 4710,
                                                                        "name": "MemberAccess",
                                                                        "src": "11361:55:16"
                                                                    }
                                                                ],
                                                                "id": 4711,
                                                                "name": "FunctionCall",
                                                                "src": "11361:57:16"
                                                            }
                                                        ],
                                                        "id": 4712,
                                                        "name": "FunctionCall",
                                                        "src": "11330:89:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "mulDown",
                                                                    "referencedDeclaration": 537,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 780,
                                                                            "type": "type(library FixedPoint)",
                                                                            "value": "FixedPoint"
                                                                        },
                                                                        "id": 4713,
                                                                        "name": "Identifier",
                                                                        "src": "11466:10:16"
                                                                    }
                                                                ],
                                                                "id": 4714,
                                                                "name": "MemberAccess",
                                                                "src": "11466:18:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4669,
                                                                    "type": "uint256",
                                                                    "value": "cashTraded"
                                                                },
                                                                "id": 4715,
                                                                "name": "Identifier",
                                                                "src": "11485:10:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "getCollateral",
                                                                            "referencedDeclaration": 11645,
                                                                            "type": "function () view external returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract IMarginTradingPool",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 11651,
                                                                                            "type": "type(contract IMarginTradingPool)",
                                                                                            "value": "IMarginTradingPool"
                                                                                        },
                                                                                        "id": 4716,
                                                                                        "name": "Identifier",
                                                                                        "src": "11497:18:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => address)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3735,
                                                                                                            "type": "mapping(address => mapping(address => address))",
                                                                                                            "value": "pools"
                                                                                                        },
                                                                                                        "id": 4717,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11516:5:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4663,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 4718,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11522:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4719,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "11516:15:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4667,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4720,
                                                                                                "name": "Identifier",
                                                                                                "src": "11532:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4721,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "11516:25:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4722,
                                                                                "name": "FunctionCall",
                                                                                "src": "11497:45:16"
                                                                            }
                                                                        ],
                                                                        "id": 4723,
                                                                        "name": "MemberAccess",
                                                                        "src": "11497:59:16"
                                                                    }
                                                                ],
                                                                "id": 4724,
                                                                "name": "FunctionCall",
                                                                "src": "11497:61:16"
                                                            }
                                                        ],
                                                        "id": 4725,
                                                        "name": "FunctionCall",
                                                        "src": "11466:93:16"
                                                    }
                                                ],
                                                "id": 4726,
                                                "name": "FunctionCall",
                                                "src": "11321:239:16"
                                            }
                                        ],
                                        "id": 4727,
                                        "name": "VariableDeclarationStatement",
                                        "src": "11294:266:16"
                                    },
                                    {
                                        "attributes": {},
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_struct$_order_$11545_memory_ptr",
                                                                    "typeString": "struct IMarginOrder.order memory"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4900,
                                                            "type": "function (struct IMarginOrder.order memory,address,address,uint256) view returns (bool)",
                                                            "value": "pretradeCheck"
                                                        },
                                                        "id": 4728,
                                                        "name": "Identifier",
                                                        "src": "11716:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4680,
                                                            "type": "struct IMarginOrder.order memory",
                                                            "value": "order"
                                                        },
                                                        "id": 4729,
                                                        "name": "Identifier",
                                                        "src": "11730:5:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4657,
                                                            "type": "address",
                                                            "value": "party"
                                                        },
                                                        "id": 4730,
                                                        "name": "Identifier",
                                                        "src": "11737:5:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4667,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4731,
                                                        "name": "Identifier",
                                                        "src": "11744:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4697,
                                                            "type": "uint256",
                                                            "value": "marginCollateral"
                                                        },
                                                        "id": 4732,
                                                        "name": "Identifier",
                                                        "src": "11754:16:16"
                                                    }
                                                ],
                                                "id": 4733,
                                                "name": "FunctionCall",
                                                "src": "11716:55:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3827,
                                                                            "type": "function (address,address,address,uint256,address,uint256,bytes32,uint256)",
                                                                            "value": "subscribers"
                                                                        },
                                                                        "id": 4734,
                                                                        "name": "Identifier",
                                                                        "src": "11795:11:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4657,
                                                                            "type": "address",
                                                                            "value": "party"
                                                                        },
                                                                        "id": 4735,
                                                                        "name": "Identifier",
                                                                        "src": "11807:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4659,
                                                                            "type": "address",
                                                                            "value": "counterparty"
                                                                        },
                                                                        "id": 4736,
                                                                        "name": "Identifier",
                                                                        "src": "11814:12:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4663,
                                                                            "type": "address",
                                                                            "value": "security"
                                                                        },
                                                                        "id": 4737,
                                                                        "name": "Identifier",
                                                                        "src": "11828:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4665,
                                                                            "type": "uint256",
                                                                            "value": "securityTraded"
                                                                        },
                                                                        "id": 4738,
                                                                        "name": "Identifier",
                                                                        "src": "11838:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4667,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4739,
                                                                        "name": "Identifier",
                                                                        "src": "11854:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4669,
                                                                            "type": "uint256",
                                                                            "value": "cashTraded"
                                                                        },
                                                                        "id": 4740,
                                                                        "name": "Identifier",
                                                                        "src": "11864:10:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4661,
                                                                            "type": "bytes32",
                                                                            "value": "orderRef"
                                                                        },
                                                                        "id": 4741,
                                                                        "name": "Identifier",
                                                                        "src": "11876:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "timestamp",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -4,
                                                                                    "type": "block",
                                                                                    "value": "block"
                                                                                },
                                                                                "id": 4742,
                                                                                "name": "Identifier",
                                                                                "src": "11886:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 4743,
                                                                        "name": "MemberAccess",
                                                                        "src": "11886:15:16"
                                                                    }
                                                                ],
                                                                "id": 4744,
                                                                "name": "FunctionCall",
                                                                "src": "11795:107:16"
                                                            }
                                                        ],
                                                        "id": 4745,
                                                        "name": "EmitStatement",
                                                        "src": "11790:112:16"
                                                    },
                                                    {
                                                        "attributes": {},
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "&&",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "tokenIn",
                                                                                    "referencedDeclaration": 11536,
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4680,
                                                                                            "type": "struct IMarginOrder.order memory",
                                                                                            "value": "order"
                                                                                        },
                                                                                        "id": 4746,
                                                                                        "name": "Identifier",
                                                                                        "src": "11920:5:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4747,
                                                                                "name": "MemberAccess",
                                                                                "src": "11920:13:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4667,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4748,
                                                                                "name": "Identifier",
                                                                                "src": "11935:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4749,
                                                                        "name": "BinaryOperation",
                                                                        "src": "11920:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "party",
                                                                                    "referencedDeclaration": 11542,
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4680,
                                                                                            "type": "struct IMarginOrder.order memory",
                                                                                            "value": "order"
                                                                                        },
                                                                                        "id": 4750,
                                                                                        "name": "Identifier",
                                                                                        "src": "11947:5:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4751,
                                                                                "name": "MemberAccess",
                                                                                "src": "11947:11:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4657,
                                                                                    "type": "address",
                                                                                    "value": "party"
                                                                                },
                                                                                "id": 4752,
                                                                                "name": "Identifier",
                                                                                "src": "11960:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 4753,
                                                                        "name": "BinaryOperation",
                                                                        "src": "11947:18:16"
                                                                    }
                                                                ],
                                                                "id": 4754,
                                                                "name": "BinaryOperation",
                                                                "src": "11920:45:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "=",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": true,
                                                                                            "type": "int256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                            "value": "collateralBalance"
                                                                                                        },
                                                                                                        "id": 4755,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "11985:17:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4657,
                                                                                                            "type": "address",
                                                                                                            "value": "party"
                                                                                                        },
                                                                                                        "id": 4756,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12003:5:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4758,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "11985:24:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4667,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4757,
                                                                                                "name": "Identifier",
                                                                                                "src": "12010:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4759,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "11985:34:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_int256",
                                                                                                            "typeString": "int256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_int256",
                                                                                                            "typeString": "int256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2218,
                                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 4760,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12022:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4761,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "12022:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "int256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "mapping(address => int256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                    "value": "collateralBalance"
                                                                                                                },
                                                                                                                "id": 4762,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "12031:17:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 4657,
                                                                                                                    "type": "address",
                                                                                                                    "value": "party"
                                                                                                                },
                                                                                                                "id": 4763,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "12049:5:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 4764,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "12031:24:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4667,
                                                                                                            "type": "address",
                                                                                                            "value": "currency"
                                                                                                        },
                                                                                                        "id": 4765,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12056:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4766,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "12031:34:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "int256",
                                                                                                    "type_conversion": true
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "type(int256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "name": "int"
                                                                                                                },
                                                                                                                "id": 4767,
                                                                                                                "name": "ElementaryTypeName",
                                                                                                                "src": "12067:3:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 4768,
                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                        "src": "12067:3:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4697,
                                                                                                            "type": "uint256",
                                                                                                            "value": "marginCollateral"
                                                                                                        },
                                                                                                        "id": 4769,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12071:16:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4770,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "12067:21:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4771,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "12022:67:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4772,
                                                                                "name": "Assignment",
                                                                                "src": "11985:104:16"
                                                                            }
                                                                        ],
                                                                        "id": 4773,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "11985:104:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "tuple()",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_stringliteral_e9a32e284667c66785eed5eccc480c74fd8dcc5c233935dfbd7732797dfad885",
                                                                                                    "typeString": "literal_string \"match\""
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3855,
                                                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                                                            "value": "collateral"
                                                                                        },
                                                                                        "id": 4774,
                                                                                        "name": "Identifier",
                                                                                        "src": "12113:10:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "hexvalue": "6d61746368",
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "token": "string",
                                                                                            "type": "literal_string \"match\"",
                                                                                            "value": "match"
                                                                                        },
                                                                                        "id": 4775,
                                                                                        "name": "Literal",
                                                                                        "src": "12124:7:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4657,
                                                                                            "type": "address",
                                                                                            "value": "party"
                                                                                        },
                                                                                        "id": 4776,
                                                                                        "name": "Identifier",
                                                                                        "src": "12133:5:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4667,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 4777,
                                                                                        "name": "Identifier",
                                                                                        "src": "12140:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "int256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                            "value": "collateralBalance"
                                                                                                        },
                                                                                                        "id": 4778,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12150:17:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4657,
                                                                                                            "type": "address",
                                                                                                            "value": "party"
                                                                                                        },
                                                                                                        "id": 4779,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "12168:5:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4780,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "12150:24:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4667,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4781,
                                                                                                "name": "Identifier",
                                                                                                "src": "12175:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4782,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "12150:34:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "timestamp",
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": -4,
                                                                                                    "type": "block",
                                                                                                    "value": "block"
                                                                                                },
                                                                                                "id": 4783,
                                                                                                "name": "Identifier",
                                                                                                "src": "12186:5:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4784,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "12186:15:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4785,
                                                                                "name": "FunctionCall",
                                                                                "src": "12113:89:16"
                                                                            }
                                                                        ],
                                                                        "id": 4786,
                                                                        "name": "EmitStatement",
                                                                        "src": "12108:94:16"
                                                                    }
                                                                ],
                                                                "id": 4787,
                                                                "name": "Block",
                                                                "src": "11966:252:16"
                                                            }
                                                        ],
                                                        "id": 4788,
                                                        "name": "IfStatement",
                                                        "src": "11917:301:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4790
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "buyer",
                                                                    "scope": 4860,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "address",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "stateMutability": "nonpayable",
                                                                            "type": "address"
                                                                        },
                                                                        "id": 4789,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "12269:7:16"
                                                                    }
                                                                ],
                                                                "id": 4790,
                                                                "name": "VariableDeclaration",
                                                                "src": "12269:13:16"
                                                            }
                                                        ],
                                                        "id": 4791,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "12269:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4793
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "seller",
                                                                    "scope": 4860,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "address",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "stateMutability": "nonpayable",
                                                                            "type": "address"
                                                                        },
                                                                        "id": 4792,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "12297:7:16"
                                                                    }
                                                                ],
                                                                "id": 4793,
                                                                "name": "VariableDeclaration",
                                                                "src": "12297:14:16"
                                                            }
                                                        ],
                                                        "id": 4794,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "12297:14:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "==",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "tokenIn",
                                                                            "referencedDeclaration": 11536,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4680,
                                                                                    "type": "struct IMarginOrder.order memory",
                                                                                    "value": "order"
                                                                                },
                                                                                "id": 4795,
                                                                                "name": "Identifier",
                                                                                "src": "12329:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 4796,
                                                                        "name": "MemberAccess",
                                                                        "src": "12329:13:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4667,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4797,
                                                                        "name": "Identifier",
                                                                        "src": "12344:8:16"
                                                                    }
                                                                ],
                                                                "id": 4798,
                                                                "name": "BinaryOperation",
                                                                "src": "12329:23:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "=",
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4790,
                                                                                            "type": "address",
                                                                                            "value": "buyer"
                                                                                        },
                                                                                        "id": 4799,
                                                                                        "name": "Identifier",
                                                                                        "src": "12384:5:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4657,
                                                                                            "type": "address",
                                                                                            "value": "party"
                                                                                        },
                                                                                        "id": 4800,
                                                                                        "name": "Identifier",
                                                                                        "src": "12392:5:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4801,
                                                                                "name": "Assignment",
                                                                                "src": "12384:13:16"
                                                                            }
                                                                        ],
                                                                        "id": 4802,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "12384:13:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "=",
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4793,
                                                                                            "type": "address",
                                                                                            "value": "seller"
                                                                                        },
                                                                                        "id": 4803,
                                                                                        "name": "Identifier",
                                                                                        "src": "12416:6:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4659,
                                                                                            "type": "address",
                                                                                            "value": "counterparty"
                                                                                        },
                                                                                        "id": 4804,
                                                                                        "name": "Identifier",
                                                                                        "src": "12425:12:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4805,
                                                                                "name": "Assignment",
                                                                                "src": "12416:21:16"
                                                                            }
                                                                        ],
                                                                        "id": 4806,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "12416:21:16"
                                                                    }
                                                                ],
                                                                "id": 4807,
                                                                "name": "Block",
                                                                "src": "12353:100:16"
                                                            },
                                                            {
                                                                "attributes": {},
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "tokenIn",
                                                                                    "referencedDeclaration": 11536,
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4680,
                                                                                            "type": "struct IMarginOrder.order memory",
                                                                                            "value": "order"
                                                                                        },
                                                                                        "id": 4808,
                                                                                        "name": "Identifier",
                                                                                        "src": "12475:5:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4809,
                                                                                "name": "MemberAccess",
                                                                                "src": "12475:13:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4663,
                                                                                    "type": "address",
                                                                                    "value": "security"
                                                                                },
                                                                                "id": 4810,
                                                                                "name": "Identifier",
                                                                                "src": "12490:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4811,
                                                                        "name": "BinaryOperation",
                                                                        "src": "12475:23:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "operator": "=",
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4790,
                                                                                                    "type": "address",
                                                                                                    "value": "buyer"
                                                                                                },
                                                                                                "id": 4812,
                                                                                                "name": "Identifier",
                                                                                                "src": "12531:5:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4659,
                                                                                                    "type": "address",
                                                                                                    "value": "counterparty"
                                                                                                },
                                                                                                "id": 4813,
                                                                                                "name": "Identifier",
                                                                                                "src": "12539:12:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4814,
                                                                                        "name": "Assignment",
                                                                                        "src": "12531:20:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4815,
                                                                                "name": "ExpressionStatement",
                                                                                "src": "12531:20:16"
                                                                            },
                                                                            {
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "operator": "=",
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4793,
                                                                                                    "type": "address",
                                                                                                    "value": "seller"
                                                                                                },
                                                                                                "id": 4816,
                                                                                                "name": "Identifier",
                                                                                                "src": "12570:6:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4657,
                                                                                                    "type": "address",
                                                                                                    "value": "party"
                                                                                                },
                                                                                                "id": 4817,
                                                                                                "name": "Identifier",
                                                                                                "src": "12579:5:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4818,
                                                                                        "name": "Assignment",
                                                                                        "src": "12570:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4819,
                                                                                "name": "ExpressionStatement",
                                                                                "src": "12570:14:16"
                                                                            }
                                                                        ],
                                                                        "id": 4820,
                                                                        "name": "Block",
                                                                        "src": "12499:101:16"
                                                                    }
                                                                ],
                                                                "id": 4821,
                                                                "name": "IfStatement",
                                                                "src": "12472:128:16"
                                                            }
                                                        ],
                                                        "id": 4822,
                                                        "name": "IfStatement",
                                                        "src": "12326:274:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4826
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "position",
                                                                    "scope": 4860,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "type": "struct IMarginManager.tradePosition",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "IMarginManager.tradePosition",
                                                                            "referencedDeclaration": 11372,
                                                                            "type": "struct IMarginManager.tradePosition"
                                                                        },
                                                                        "id": 4825,
                                                                        "name": "UserDefinedTypeName",
                                                                        "src": "12614:28:16"
                                                                    }
                                                                ],
                                                                "id": 4826,
                                                                "name": "VariableDeclaration",
                                                                "src": "12614:44:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": true,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        "buyer",
                                                                        "seller",
                                                                        "securityAmount",
                                                                        "cashAmount",
                                                                        "orderReference",
                                                                        "marginCollateral",
                                                                        "timestamp"
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                                    "typeString": "int_const 0"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "tradePosition",
                                                                            "referencedDeclaration": 11372,
                                                                            "type": "type(struct IMarginManager.tradePosition storage pointer)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 11517,
                                                                                    "type": "type(contract IMarginManager)",
                                                                                    "value": "IMarginManager"
                                                                                },
                                                                                "id": 4827,
                                                                                "name": "Identifier",
                                                                                "src": "12661:14:16"
                                                                            }
                                                                        ],
                                                                        "id": 4828,
                                                                        "name": "MemberAccess",
                                                                        "src": "12661:28:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4790,
                                                                            "type": "address",
                                                                            "value": "buyer"
                                                                        },
                                                                        "id": 4829,
                                                                        "name": "Identifier",
                                                                        "src": "12919:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4793,
                                                                            "type": "address",
                                                                            "value": "seller"
                                                                        },
                                                                        "id": 4830,
                                                                        "name": "Identifier",
                                                                        "src": "12952:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4665,
                                                                            "type": "uint256",
                                                                            "value": "securityTraded"
                                                                        },
                                                                        "id": 4831,
                                                                        "name": "Identifier",
                                                                        "src": "12994:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4669,
                                                                            "type": "uint256",
                                                                            "value": "cashTraded"
                                                                        },
                                                                        "id": 4832,
                                                                        "name": "Identifier",
                                                                        "src": "13040:10:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4661,
                                                                            "type": "bytes32",
                                                                            "value": "orderRef"
                                                                        },
                                                                        "id": 4833,
                                                                        "name": "Identifier",
                                                                        "src": "13086:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4697,
                                                                            "type": "uint256",
                                                                            "value": "marginCollateral"
                                                                        },
                                                                        "id": 4834,
                                                                        "name": "Identifier",
                                                                        "src": "13132:16:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 4835,
                                                                        "name": "Literal",
                                                                        "src": "13179:1:16"
                                                                    }
                                                                ],
                                                                "id": 4836,
                                                                "name": "FunctionCall",
                                                                "src": "12661:535:16"
                                                            }
                                                        ],
                                                        "id": 4837,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "12614:582:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_struct$_tradePosition_$11372_memory_ptr",
                                                                                    "typeString": "struct IMarginManager.tradePosition memory"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "push",
                                                                            "type": "function (struct IMarginManager.tradePosition storage ref)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3775,
                                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                    "value": "positions"
                                                                                                },
                                                                                                "id": 4838,
                                                                                                "name": "Identifier",
                                                                                                "src": "13211:9:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4663,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 4839,
                                                                                                "name": "Identifier",
                                                                                                "src": "13221:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4841,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "13211:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4667,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 4840,
                                                                                        "name": "Identifier",
                                                                                        "src": "13231:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4842,
                                                                                "name": "IndexAccess",
                                                                                "src": "13211:29:16"
                                                                            }
                                                                        ],
                                                                        "id": 4843,
                                                                        "name": "MemberAccess",
                                                                        "src": "13211:34:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4826,
                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                            "value": "position"
                                                                        },
                                                                        "id": 4844,
                                                                        "name": "Identifier",
                                                                        "src": "13246:8:16"
                                                                    }
                                                                ],
                                                                "id": 4845,
                                                                "name": "FunctionCall",
                                                                "src": "13211:44:16"
                                                            }
                                                        ],
                                                        "id": 4846,
                                                        "name": "ExpressionStatement",
                                                        "src": "13211:44:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3785,
                                                                                    "type": "mapping(bytes32 => uint256)",
                                                                                    "value": "orders"
                                                                                },
                                                                                "id": 4847,
                                                                                "name": "Identifier",
                                                                                "src": "13270:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4661,
                                                                                    "type": "bytes32",
                                                                                    "value": "orderRef"
                                                                                },
                                                                                "id": 4848,
                                                                                "name": "Identifier",
                                                                                "src": "13277:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4849,
                                                                        "name": "IndexAccess",
                                                                        "src": "13270:16:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "-",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "length",
                                                                                    "type": "uint256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3775,
                                                                                                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                            "value": "positions"
                                                                                                        },
                                                                                                        "id": 4850,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "13289:9:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4663,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 4851,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "13299:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4852,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "13289:19:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4667,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4853,
                                                                                                "name": "Identifier",
                                                                                                "src": "13309:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4854,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "13289:29:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4855,
                                                                                "name": "MemberAccess",
                                                                                "src": "13289:36:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "hexvalue": "31",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "token": "number",
                                                                                    "type": "int_const 1",
                                                                                    "value": "1"
                                                                                },
                                                                                "id": 4856,
                                                                                "name": "Literal",
                                                                                "src": "13328:1:16"
                                                                            }
                                                                        ],
                                                                        "id": 4857,
                                                                        "name": "BinaryOperation",
                                                                        "src": "13289:40:16"
                                                                    }
                                                                ],
                                                                "id": 4858,
                                                                "name": "Assignment",
                                                                "src": "13270:59:16"
                                                            }
                                                        ],
                                                        "id": 4859,
                                                        "name": "ExpressionStatement",
                                                        "src": "13270:59:16"
                                                    }
                                                ],
                                                "id": 4860,
                                                "name": "Block",
                                                "src": "11772:1569:16"
                                            }
                                        ],
                                        "id": 4861,
                                        "name": "IfStatement",
                                        "src": "11713:1628:16"
                                    }
                                ],
                                "id": 4862,
                                "name": "Block",
                                "src": "11145:2203:16"
                            }
                        ],
                        "id": 4863,
                        "name": "FunctionDefinition",
                        "src": "10922:2426:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "pretradeCheck",
                            "scope": 6363,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "order",
                                            "scope": 4900,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "struct IMarginOrder.order",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "IMarginOrder.order",
                                                    "referencedDeclaration": 11545,
                                                    "type": "struct IMarginOrder.order"
                                                },
                                                "id": 4864,
                                                "name": "UserDefinedTypeName",
                                                "src": "13383:18:16"
                                            }
                                        ],
                                        "id": 4865,
                                        "name": "VariableDeclaration",
                                        "src": "13383:31:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "party",
                                            "scope": 4900,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4866,
                                                "name": "ElementaryTypeName",
                                                "src": "13416:7:16"
                                            }
                                        ],
                                        "id": 4867,
                                        "name": "VariableDeclaration",
                                        "src": "13416:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 4900,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4868,
                                                "name": "ElementaryTypeName",
                                                "src": "13431:7:16"
                                            }
                                        ],
                                        "id": 4869,
                                        "name": "VariableDeclaration",
                                        "src": "13431:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "marginCollateral",
                                            "scope": 4900,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4870,
                                                "name": "ElementaryTypeName",
                                                "src": "13449:7:16"
                                            }
                                        ],
                                        "id": 4871,
                                        "name": "VariableDeclaration",
                                        "src": "13449:24:16"
                                    }
                                ],
                                "id": 4872,
                                "name": "ParameterList",
                                "src": "13382:92:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 4900,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 4873,
                                                "name": "ElementaryTypeName",
                                                "src": "13496:4:16"
                                            }
                                        ],
                                        "id": 4874,
                                        "name": "VariableDeclaration",
                                        "src": "13496:4:16"
                                    }
                                ],
                                "id": 4875,
                                "name": "ParameterList",
                                "src": "13495:6:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {},
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "==",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "tokenIn",
                                                            "referencedDeclaration": 11536,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4865,
                                                                    "type": "struct IMarginOrder.order memory",
                                                                    "value": "order"
                                                                },
                                                                "id": 4876,
                                                                "name": "Identifier",
                                                                "src": "13515:5:16"
                                                            }
                                                        ],
                                                        "id": 4877,
                                                        "name": "MemberAccess",
                                                        "src": "13515:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 4869,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 4878,
                                                        "name": "Identifier",
                                                        "src": "13530:8:16"
                                                    }
                                                ],
                                                "id": 4879,
                                                "name": "BinaryOperation",
                                                "src": "13515:23:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": ">=",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 4880,
                                                                                        "name": "Identifier",
                                                                                        "src": "13557:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4867,
                                                                                            "type": "address",
                                                                                            "value": "party"
                                                                                        },
                                                                                        "id": 4881,
                                                                                        "name": "Identifier",
                                                                                        "src": "13575:5:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4882,
                                                                                "name": "IndexAccess",
                                                                                "src": "13557:24:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4869,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4883,
                                                                                "name": "Identifier",
                                                                                "src": "13582:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4884,
                                                                        "name": "IndexAccess",
                                                                        "src": "13557:34:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "type(int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "name": "int"
                                                                                        },
                                                                                        "id": 4885,
                                                                                        "name": "ElementaryTypeName",
                                                                                        "src": "13595:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4886,
                                                                                "name": "ElementaryTypeNameExpression",
                                                                                "src": "13595:3:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4871,
                                                                                    "type": "uint256",
                                                                                    "value": "marginCollateral"
                                                                                },
                                                                                "id": 4887,
                                                                                "name": "Identifier",
                                                                                "src": "13599:16:16"
                                                                            }
                                                                        ],
                                                                        "id": 4888,
                                                                        "name": "FunctionCall",
                                                                        "src": "13595:21:16"
                                                                    }
                                                                ],
                                                                "id": 4889,
                                                                "name": "BinaryOperation",
                                                                "src": "13557:59:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 4875
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "74727565",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "true"
                                                                        },
                                                                        "id": 4890,
                                                                        "name": "Literal",
                                                                        "src": "13642:4:16"
                                                                    }
                                                                ],
                                                                "id": 4891,
                                                                "name": "Return",
                                                                "src": "13635:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "functionReturnParameters": 4875
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "66616c7365",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "bool",
                                                                            "type": "bool",
                                                                            "value": "false"
                                                                        },
                                                                        "id": 4892,
                                                                        "name": "Literal",
                                                                        "src": "13690:5:16"
                                                                    }
                                                                ],
                                                                "id": 4893,
                                                                "name": "Return",
                                                                "src": "13683:12:16"
                                                            }
                                                        ],
                                                        "id": 4894,
                                                        "name": "IfStatement",
                                                        "src": "13554:141:16"
                                                    }
                                                ],
                                                "id": 4895,
                                                "name": "Block",
                                                "src": "13539:168:16"
                                            }
                                        ],
                                        "id": 4896,
                                        "name": "IfStatement",
                                        "src": "13512:195:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 4875
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "74727565",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "bool",
                                                    "type": "bool",
                                                    "value": "true"
                                                },
                                                "id": 4897,
                                                "name": "Literal",
                                                "src": "13724:4:16"
                                            }
                                        ],
                                        "id": 4898,
                                        "name": "Return",
                                        "src": "13717:11:16"
                                    }
                                ],
                                "id": 4899,
                                "name": "Block",
                                "src": "13501:235:16"
                            }
                        ],
                        "id": 4900,
                        "name": "FunctionDefinition",
                        "src": "13360:376:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11429
                            ],
                            "functionSelector": "6b0fd140",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "onTrade",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 4916,
                                "name": "OverrideSpecifier",
                                "src": "13904:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "ref",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 4901,
                                                "name": "ElementaryTypeName",
                                                "src": "13761:7:16"
                                            }
                                        ],
                                        "id": 4902,
                                        "name": "VariableDeclaration",
                                        "src": "13761:11:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cref",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 4903,
                                                "name": "ElementaryTypeName",
                                                "src": "13774:7:16"
                                            }
                                        ],
                                        "id": 4904,
                                        "name": "VariableDeclaration",
                                        "src": "13774:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4905,
                                                "name": "ElementaryTypeName",
                                                "src": "13788:7:16"
                                            }
                                        ],
                                        "id": 4906,
                                        "name": "VariableDeclaration",
                                        "src": "13788:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityTraded",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4907,
                                                "name": "ElementaryTypeName",
                                                "src": "13806:7:16"
                                            }
                                        ],
                                        "id": 4908,
                                        "name": "VariableDeclaration",
                                        "src": "13806:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 4909,
                                                "name": "ElementaryTypeName",
                                                "src": "13830:7:16"
                                            }
                                        ],
                                        "id": 4910,
                                        "name": "VariableDeclaration",
                                        "src": "13830:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currencyTraded",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4911,
                                                "name": "ElementaryTypeName",
                                                "src": "13848:7:16"
                                            }
                                        ],
                                        "id": 4912,
                                        "name": "VariableDeclaration",
                                        "src": "13848:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "executionTime",
                                            "scope": 5169,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 4913,
                                                "name": "ElementaryTypeName",
                                                "src": "13872:7:16"
                                            }
                                        ],
                                        "id": 4914,
                                        "name": "VariableDeclaration",
                                        "src": "13872:21:16"
                                    }
                                ],
                                "id": 4915,
                                "name": "ParameterList",
                                "src": "13760:134:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 4921,
                                "name": "ParameterList",
                                "src": "13936:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3921,
                                            "type": "modifier (address)",
                                            "value": "onlyBridge"
                                        },
                                        "id": 4917,
                                        "name": "Identifier",
                                        "src": "13913:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 4918,
                                                "name": "Identifier",
                                                "src": "13924:3:16"
                                            }
                                        ],
                                        "id": 4919,
                                        "name": "MemberAccess",
                                        "src": "13924:10:16"
                                    }
                                ],
                                "id": 4920,
                                "name": "ModifierInvocation",
                                "src": "13913:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "&&",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4908,
                                                                    "type": "uint256",
                                                                    "value": "securityTraded"
                                                                },
                                                                "id": 4922,
                                                                "name": "Identifier",
                                                                "src": "13950:14:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 4923,
                                                                "name": "Literal",
                                                                "src": "13966:1:16"
                                                            }
                                                        ],
                                                        "id": 4924,
                                                        "name": "BinaryOperation",
                                                        "src": "13950:17:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "!=",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 4912,
                                                                    "type": "uint256",
                                                                    "value": "currencyTraded"
                                                                },
                                                                "id": 4925,
                                                                "name": "Identifier",
                                                                "src": "13971:14:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 4926,
                                                                "name": "Literal",
                                                                "src": "13987:1:16"
                                                            }
                                                        ],
                                                        "id": 4927,
                                                        "name": "BinaryOperation",
                                                        "src": "13971:17:16"
                                                    }
                                                ],
                                                "id": 4928,
                                                "name": "BinaryOperation",
                                                "src": "13950:38:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4930
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "pay",
                                                                    "scope": 5036,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "uint256",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint256",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 4929,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "14074:7:16"
                                                                    }
                                                                ],
                                                                "id": 4930,
                                                                "name": "VariableDeclaration",
                                                                "src": "14074:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5279,
                                                                            "type": "function (address,address,uint256) returns (uint256)",
                                                                            "value": "calculateFee"
                                                                        },
                                                                        "id": 4931,
                                                                        "name": "Identifier",
                                                                        "src": "14088:12:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => address)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3735,
                                                                                            "type": "mapping(address => mapping(address => address))",
                                                                                            "value": "pools"
                                                                                        },
                                                                                        "id": 4932,
                                                                                        "name": "Identifier",
                                                                                        "src": "14101:5:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4906,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 4933,
                                                                                        "name": "Identifier",
                                                                                        "src": "14107:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4934,
                                                                                "name": "IndexAccess",
                                                                                "src": "14101:15:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4935,
                                                                                "name": "Identifier",
                                                                                "src": "14117:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4936,
                                                                        "name": "IndexAccess",
                                                                        "src": "14101:25:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4910,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 4937,
                                                                        "name": "Identifier",
                                                                        "src": "14128:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4912,
                                                                            "type": "uint256",
                                                                            "value": "currencyTraded"
                                                                        },
                                                                        "id": 4938,
                                                                        "name": "Identifier",
                                                                        "src": "14138:14:16"
                                                                    }
                                                                ],
                                                                "id": 4939,
                                                                "name": "FunctionCall",
                                                                "src": "14088:65:16"
                                                            }
                                                        ],
                                                        "id": 4940,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "14074:79:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4942
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "orderbook",
                                                                    "scope": 5036,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "address",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "stateMutability": "nonpayable",
                                                                            "type": "address"
                                                                        },
                                                                        "id": 4941,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "14168:7:16"
                                                                    }
                                                                ],
                                                                "id": 4942,
                                                                "name": "VariableDeclaration",
                                                                "src": "14168:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "address",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "getOrderbook",
                                                                            "referencedDeclaration": 11635,
                                                                            "type": "function () view external returns (address)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract IMarginTradingPool",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 11651,
                                                                                            "type": "type(contract IMarginTradingPool)",
                                                                                            "value": "IMarginTradingPool"
                                                                                        },
                                                                                        "id": 4943,
                                                                                        "name": "Identifier",
                                                                                        "src": "14188:18:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => address)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3735,
                                                                                                            "type": "mapping(address => mapping(address => address))",
                                                                                                            "value": "pools"
                                                                                                        },
                                                                                                        "id": 4944,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14207:5:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4906,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 4945,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14213:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4946,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "14207:15:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4910,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 4947,
                                                                                                "name": "Identifier",
                                                                                                "src": "14223:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4948,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "14207:25:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4949,
                                                                                "name": "FunctionCall",
                                                                                "src": "14188:45:16"
                                                                            }
                                                                        ],
                                                                        "id": 4950,
                                                                        "name": "MemberAccess",
                                                                        "src": "14188:58:16"
                                                                    }
                                                                ],
                                                                "id": 4951,
                                                                "name": "FunctionCall",
                                                                "src": "14188:60:16"
                                                            }
                                                        ],
                                                        "id": 4952,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "14168:80:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                4954
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "party",
                                                                    "scope": 5036,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "address",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address",
                                                                            "stateMutability": "nonpayable",
                                                                            "type": "address"
                                                                        },
                                                                        "id": 4953,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "14263:7:16"
                                                                    }
                                                                ],
                                                                "id": 4954,
                                                                "name": "VariableDeclaration",
                                                                "src": "14263:13:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "address"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "tokenIn",
                                                                                    "referencedDeclaration": 11536,
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "struct IMarginOrder.order memory",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_bytes32",
                                                                                                            "typeString": "bytes32"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "getOrder",
                                                                                                    "referencedDeclaration": 11572,
                                                                                                    "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "contract IMarginOrder",
                                                                                                            "type_conversion": true
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 11607,
                                                                                                                    "type": "type(contract IMarginOrder)",
                                                                                                                    "value": "IMarginOrder"
                                                                                                                },
                                                                                                                "id": 4955,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "14279:12:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 4942,
                                                                                                                    "type": "address",
                                                                                                                    "value": "orderbook"
                                                                                                                },
                                                                                                                "id": 4956,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "14292:9:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 4957,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "14279:23:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4958,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "14279:32:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4902,
                                                                                                    "type": "bytes32",
                                                                                                    "value": "ref"
                                                                                                },
                                                                                                "id": 4959,
                                                                                                "name": "Identifier",
                                                                                                "src": "14312:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4960,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "14279:37:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4961,
                                                                                "name": "MemberAccess",
                                                                                "src": "14279:45:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 4962,
                                                                                "name": "Identifier",
                                                                                "src": "14326:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 4963,
                                                                        "name": "BinaryOperation",
                                                                        "src": "14279:55:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "party",
                                                                            "referencedDeclaration": 11542,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "struct IMarginOrder.order memory",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "getOrder",
                                                                                            "referencedDeclaration": 11572,
                                                                                            "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "contract IMarginOrder",
                                                                                                    "type_conversion": true
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                }
                                                                                                            ],
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 11607,
                                                                                                            "type": "type(contract IMarginOrder)",
                                                                                                            "value": "IMarginOrder"
                                                                                                        },
                                                                                                        "id": 4964,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14379:12:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4942,
                                                                                                            "type": "address",
                                                                                                            "value": "orderbook"
                                                                                                        },
                                                                                                        "id": 4965,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14392:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4966,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "14379:23:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4967,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "14379:32:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4902,
                                                                                            "type": "bytes32",
                                                                                            "value": "ref"
                                                                                        },
                                                                                        "id": 4968,
                                                                                        "name": "Identifier",
                                                                                        "src": "14412:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4969,
                                                                                "name": "FunctionCall",
                                                                                "src": "14379:37:16"
                                                                            }
                                                                        ],
                                                                        "id": 4970,
                                                                        "name": "MemberAccess",
                                                                        "src": "14379:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "party",
                                                                            "referencedDeclaration": 11542,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "struct IMarginOrder.order memory",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "getOrder",
                                                                                            "referencedDeclaration": 11572,
                                                                                            "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "contract IMarginOrder",
                                                                                                    "type_conversion": true
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                }
                                                                                                            ],
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 11607,
                                                                                                            "type": "type(contract IMarginOrder)",
                                                                                                            "value": "IMarginOrder"
                                                                                                        },
                                                                                                        "id": 4971,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14466:12:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4942,
                                                                                                            "type": "address",
                                                                                                            "value": "orderbook"
                                                                                                        },
                                                                                                        "id": 4972,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14479:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 4973,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "14466:23:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 4974,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "14466:32:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4904,
                                                                                            "type": "bytes32",
                                                                                            "value": "cref"
                                                                                        },
                                                                                        "id": 4975,
                                                                                        "name": "Identifier",
                                                                                        "src": "14499:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4976,
                                                                                "name": "FunctionCall",
                                                                                "src": "14466:38:16"
                                                                            }
                                                                        ],
                                                                        "id": 4977,
                                                                        "name": "MemberAccess",
                                                                        "src": "14466:44:16"
                                                                    }
                                                                ],
                                                                "id": 4978,
                                                                "name": "Conditional",
                                                                "src": "14279:231:16"
                                                            }
                                                        ],
                                                        "id": 4979,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "14263:247:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "reportTrade",
                                                                            "referencedDeclaration": 11606,
                                                                            "type": "function (bytes32,bytes32,uint256,uint256,uint256) external"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "contract IMarginOrder",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 11607,
                                                                                            "type": "type(contract IMarginOrder)",
                                                                                            "value": "IMarginOrder"
                                                                                        },
                                                                                        "id": 4980,
                                                                                        "name": "Identifier",
                                                                                        "src": "14525:12:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4942,
                                                                                            "type": "address",
                                                                                            "value": "orderbook"
                                                                                        },
                                                                                        "id": 4981,
                                                                                        "name": "Identifier",
                                                                                        "src": "14538:9:16"
                                                                                    }
                                                                                ],
                                                                                "id": 4982,
                                                                                "name": "FunctionCall",
                                                                                "src": "14525:23:16"
                                                                            }
                                                                        ],
                                                                        "id": 4983,
                                                                        "name": "MemberAccess",
                                                                        "src": "14525:35:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4902,
                                                                            "type": "bytes32",
                                                                            "value": "ref"
                                                                        },
                                                                        "id": 4984,
                                                                        "name": "Identifier",
                                                                        "src": "14561:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4904,
                                                                            "type": "bytes32",
                                                                            "value": "cref"
                                                                        },
                                                                        "id": 4985,
                                                                        "name": "Identifier",
                                                                        "src": "14566:4:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4908,
                                                                            "type": "uint256",
                                                                            "value": "securityTraded"
                                                                        },
                                                                        "id": 4986,
                                                                        "name": "Identifier",
                                                                        "src": "14572:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4912,
                                                                            "type": "uint256",
                                                                            "value": "currencyTraded"
                                                                        },
                                                                        "id": 4987,
                                                                        "name": "Identifier",
                                                                        "src": "14588:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "timestamp",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -4,
                                                                                    "type": "block",
                                                                                    "value": "block"
                                                                                },
                                                                                "id": 4988,
                                                                                "name": "Identifier",
                                                                                "src": "14604:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 4989,
                                                                        "name": "MemberAccess",
                                                                        "src": "14604:15:16"
                                                                    }
                                                                ],
                                                                "id": 4990,
                                                                "name": "FunctionCall",
                                                                "src": "14525:95:16"
                                                            }
                                                        ],
                                                        "id": 4991,
                                                        "name": "ExpressionStatement",
                                                        "src": "14525:95:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_bytes32",
                                                                                    "typeString": "bytes32"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5237,
                                                                            "type": "function (address,bytes32,bytes32,uint256,uint256,address,uint256)",
                                                                            "value": "tradeReport"
                                                                        },
                                                                        "id": 4992,
                                                                        "name": "Identifier",
                                                                        "src": "14635:11:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4942,
                                                                            "type": "address",
                                                                            "value": "orderbook"
                                                                        },
                                                                        "id": 4993,
                                                                        "name": "Identifier",
                                                                        "src": "14647:9:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4902,
                                                                            "type": "bytes32",
                                                                            "value": "ref"
                                                                        },
                                                                        "id": 4994,
                                                                        "name": "Identifier",
                                                                        "src": "14658:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4904,
                                                                            "type": "bytes32",
                                                                            "value": "cref"
                                                                        },
                                                                        "id": 4995,
                                                                        "name": "Identifier",
                                                                        "src": "14663:4:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4908,
                                                                            "type": "uint256",
                                                                            "value": "securityTraded"
                                                                        },
                                                                        "id": 4996,
                                                                        "name": "Identifier",
                                                                        "src": "14669:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4912,
                                                                            "type": "uint256",
                                                                            "value": "currencyTraded"
                                                                        },
                                                                        "id": 4997,
                                                                        "name": "Identifier",
                                                                        "src": "14685:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4954,
                                                                            "type": "address",
                                                                            "value": "party"
                                                                        },
                                                                        "id": 4998,
                                                                        "name": "Identifier",
                                                                        "src": "14701:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4930,
                                                                            "type": "uint256",
                                                                            "value": "pay"
                                                                        },
                                                                        "id": 4999,
                                                                        "name": "Identifier",
                                                                        "src": "14708:3:16"
                                                                    }
                                                                ],
                                                                "id": 5000,
                                                                "name": "FunctionCall",
                                                                "src": "14635:77:16"
                                                            }
                                                        ],
                                                        "id": 5001,
                                                        "name": "ExpressionStatement",
                                                        "src": "14635:77:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                5003
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "pos",
                                                                    "scope": 5036,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "uint256",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint256",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 5002,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "14727:7:16"
                                                                    }
                                                                ],
                                                                "id": 5003,
                                                                "name": "VariableDeclaration",
                                                                "src": "14727:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3785,
                                                                            "type": "mapping(bytes32 => uint256)",
                                                                            "value": "orders"
                                                                        },
                                                                        "id": 5004,
                                                                        "name": "Identifier",
                                                                        "src": "14741:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4902,
                                                                            "type": "bytes32",
                                                                            "value": "ref"
                                                                        },
                                                                        "id": 5005,
                                                                        "name": "Identifier",
                                                                        "src": "14748:3:16"
                                                                    }
                                                                ],
                                                                "id": 5006,
                                                                "name": "IndexAccess",
                                                                "src": "14741:11:16"
                                                            }
                                                        ],
                                                        "id": 5007,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "14727:25:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "member_name": "timestamp",
                                                                            "referencedDeclaration": 11371,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3775,
                                                                                                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                            "value": "positions"
                                                                                                        },
                                                                                                        "id": 5008,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14890:9:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4906,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 5009,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "14900:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5012,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "14890:19:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4910,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 5010,
                                                                                                "name": "Identifier",
                                                                                                "src": "14910:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5013,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "14890:29:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5003,
                                                                                            "type": "uint256",
                                                                                            "value": "pos"
                                                                                        },
                                                                                        "id": 5011,
                                                                                        "name": "Identifier",
                                                                                        "src": "14920:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5014,
                                                                                "name": "IndexAccess",
                                                                                "src": "14890:34:16"
                                                                            }
                                                                        ],
                                                                        "id": 5015,
                                                                        "name": "MemberAccess",
                                                                        "src": "14890:44:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4914,
                                                                            "type": "uint256",
                                                                            "value": "executionTime"
                                                                        },
                                                                        "id": 5016,
                                                                        "name": "Identifier",
                                                                        "src": "14937:13:16"
                                                                    }
                                                                ],
                                                                "id": 5017,
                                                                "name": "Assignment",
                                                                "src": "14890:60:16"
                                                            }
                                                        ],
                                                        "id": 5018,
                                                        "name": "ExpressionStatement",
                                                        "src": "14890:60:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5003,
                                                                            "type": "uint256",
                                                                            "value": "pos"
                                                                        },
                                                                        "id": 5019,
                                                                        "name": "Identifier",
                                                                        "src": "14965:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3785,
                                                                                    "type": "mapping(bytes32 => uint256)",
                                                                                    "value": "orders"
                                                                                },
                                                                                "id": 5020,
                                                                                "name": "Identifier",
                                                                                "src": "14971:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4904,
                                                                                    "type": "bytes32",
                                                                                    "value": "cref"
                                                                                },
                                                                                "id": 5021,
                                                                                "name": "Identifier",
                                                                                "src": "14978:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5022,
                                                                        "name": "IndexAccess",
                                                                        "src": "14971:12:16"
                                                                    }
                                                                ],
                                                                "id": 5023,
                                                                "name": "Assignment",
                                                                "src": "14965:18:16"
                                                            }
                                                        ],
                                                        "id": 5024,
                                                        "name": "ExpressionStatement",
                                                        "src": "14965:18:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "member_name": "timestamp",
                                                                            "referencedDeclaration": 11371,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3775,
                                                                                                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                            "value": "positions"
                                                                                                        },
                                                                                                        "id": 5025,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "15060:9:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 4906,
                                                                                                            "type": "address",
                                                                                                            "value": "security"
                                                                                                        },
                                                                                                        "id": 5026,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "15070:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5029,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "15060:19:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4910,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 5027,
                                                                                                "name": "Identifier",
                                                                                                "src": "15080:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5030,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15060:29:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5003,
                                                                                            "type": "uint256",
                                                                                            "value": "pos"
                                                                                        },
                                                                                        "id": 5028,
                                                                                        "name": "Identifier",
                                                                                        "src": "15090:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5031,
                                                                                "name": "IndexAccess",
                                                                                "src": "15060:34:16"
                                                                            }
                                                                        ],
                                                                        "id": 5032,
                                                                        "name": "MemberAccess",
                                                                        "src": "15060:44:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4914,
                                                                            "type": "uint256",
                                                                            "value": "executionTime"
                                                                        },
                                                                        "id": 5033,
                                                                        "name": "Identifier",
                                                                        "src": "15107:13:16"
                                                                    }
                                                                ],
                                                                "id": 5034,
                                                                "name": "Assignment",
                                                                "src": "15060:60:16"
                                                            }
                                                        ],
                                                        "id": 5035,
                                                        "name": "ExpressionStatement",
                                                        "src": "15060:60:16"
                                                    }
                                                ],
                                                "id": 5036,
                                                "name": "Block",
                                                "src": "13989:1143:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                5040
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "position",
                                                                    "scope": 5166,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "type": "struct IMarginManager.tradePosition",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "IMarginManager.tradePosition",
                                                                            "referencedDeclaration": 11372,
                                                                            "type": "struct IMarginManager.tradePosition"
                                                                        },
                                                                        "id": 5039,
                                                                        "name": "UserDefinedTypeName",
                                                                        "src": "15204:28:16"
                                                                    }
                                                                ],
                                                                "id": 5040,
                                                                "name": "VariableDeclaration",
                                                                "src": "15204:44:16"
                                                            }
                                                        ],
                                                        "id": 5041,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "15204:44:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                5043
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "pos",
                                                                    "scope": 5166,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "uint256",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "uint256",
                                                                            "type": "uint256"
                                                                        },
                                                                        "id": 5042,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "15263:7:16"
                                                                    }
                                                                ],
                                                                "id": 5043,
                                                                "name": "VariableDeclaration",
                                                                "src": "15263:11:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3785,
                                                                            "type": "mapping(bytes32 => uint256)",
                                                                            "value": "orders"
                                                                        },
                                                                        "id": 5044,
                                                                        "name": "Identifier",
                                                                        "src": "15277:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4902,
                                                                            "type": "bytes32",
                                                                            "value": "ref"
                                                                        },
                                                                        "id": 5045,
                                                                        "name": "Identifier",
                                                                        "src": "15284:3:16"
                                                                    }
                                                                ],
                                                                "id": 5046,
                                                                "name": "IndexAccess",
                                                                "src": "15277:11:16"
                                                            }
                                                        ],
                                                        "id": 5047,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "15263:25:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "struct IMarginManager.tradePosition memory"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5040,
                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                            "value": "position"
                                                                        },
                                                                        "id": 5048,
                                                                        "name": "Identifier",
                                                                        "src": "15303:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "struct IMarginManager.tradePosition storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3775,
                                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                    "value": "positions"
                                                                                                },
                                                                                                "id": 5049,
                                                                                                "name": "Identifier",
                                                                                                "src": "15314:9:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4906,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 5050,
                                                                                                "name": "Identifier",
                                                                                                "src": "15324:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5051,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15314:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5052,
                                                                                        "name": "Identifier",
                                                                                        "src": "15334:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5053,
                                                                                "name": "IndexAccess",
                                                                                "src": "15314:29:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5043,
                                                                                    "type": "uint256",
                                                                                    "value": "pos"
                                                                                },
                                                                                "id": 5054,
                                                                                "name": "Identifier",
                                                                                "src": "15344:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5055,
                                                                        "name": "IndexAccess",
                                                                        "src": "15314:34:16"
                                                                    }
                                                                ],
                                                                "id": 5056,
                                                                "name": "Assignment",
                                                                "src": "15303:45:16"
                                                            }
                                                        ],
                                                        "id": 5057,
                                                        "name": "ExpressionStatement",
                                                        "src": "15303:45:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5058,
                                                                                        "name": "Identifier",
                                                                                        "src": "15363:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5059,
                                                                                                "name": "Identifier",
                                                                                                "src": "15381:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5060,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "15381:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5062,
                                                                                "name": "IndexAccess",
                                                                                "src": "15363:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5061,
                                                                                "name": "Identifier",
                                                                                "src": "15397:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5063,
                                                                        "name": "IndexAccess",
                                                                        "src": "15363:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "add",
                                                                                    "referencedDeclaration": 2150,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5064,
                                                                                        "name": "Identifier",
                                                                                        "src": "15409:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5065,
                                                                                "name": "MemberAccess",
                                                                                "src": "15409:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5066,
                                                                                                "name": "Identifier",
                                                                                                "src": "15418:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "buyer",
                                                                                                    "referencedDeclaration": 11359,
                                                                                                    "type": "address"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5040,
                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                            "value": "position"
                                                                                                        },
                                                                                                        "id": 5067,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "15436:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5068,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "15436:14:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5069,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15418:33:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5070,
                                                                                        "name": "Identifier",
                                                                                        "src": "15452:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5071,
                                                                                "name": "IndexAccess",
                                                                                "src": "15418:43:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5072,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "15463:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5073,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "15463:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "marginCollateral",
                                                                                            "referencedDeclaration": 11369,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5074,
                                                                                                "name": "Identifier",
                                                                                                "src": "15467:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5075,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "15467:25:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5076,
                                                                                "name": "FunctionCall",
                                                                                "src": "15463:30:16"
                                                                            }
                                                                        ],
                                                                        "id": 5077,
                                                                        "name": "FunctionCall",
                                                                        "src": "15409:85:16"
                                                                    }
                                                                ],
                                                                "id": 5078,
                                                                "name": "Assignment",
                                                                "src": "15363:131:16"
                                                            }
                                                        ],
                                                        "id": 5079,
                                                        "name": "ExpressionStatement",
                                                        "src": "15363:131:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "delete",
                                                                    "prefix": true,
                                                                    "type": "tuple()"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "struct IMarginManager.tradePosition storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3775,
                                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                    "value": "positions"
                                                                                                },
                                                                                                "id": 5080,
                                                                                                "name": "Identifier",
                                                                                                "src": "15516:9:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4906,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 5081,
                                                                                                "name": "Identifier",
                                                                                                "src": "15526:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5082,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15516:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5083,
                                                                                        "name": "Identifier",
                                                                                        "src": "15536:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5084,
                                                                                "name": "IndexAccess",
                                                                                "src": "15516:29:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5043,
                                                                                    "type": "uint256",
                                                                                    "value": "pos"
                                                                                },
                                                                                "id": 5085,
                                                                                "name": "Identifier",
                                                                                "src": "15546:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5086,
                                                                        "name": "IndexAccess",
                                                                        "src": "15516:34:16"
                                                                    }
                                                                ],
                                                                "id": 5087,
                                                                "name": "UnaryOperation",
                                                                "src": "15509:41:16"
                                                            }
                                                        ],
                                                        "id": 5088,
                                                        "name": "ExpressionStatement",
                                                        "src": "15509:41:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                                    "typeString": "literal_string \"trade\""
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3855,
                                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                                            "value": "collateral"
                                                                        },
                                                                        "id": 5089,
                                                                        "name": "Identifier",
                                                                        "src": "15570:10:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "7472616465",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "string",
                                                                            "type": "literal_string \"trade\"",
                                                                            "value": "trade"
                                                                        },
                                                                        "id": 5090,
                                                                        "name": "Literal",
                                                                        "src": "15581:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "buyer",
                                                                            "referencedDeclaration": 11359,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5040,
                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                    "value": "position"
                                                                                },
                                                                                "id": 5091,
                                                                                "name": "Identifier",
                                                                                "src": "15590:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5092,
                                                                        "name": "MemberAccess",
                                                                        "src": "15590:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4910,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5093,
                                                                        "name": "Identifier",
                                                                        "src": "15606:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5094,
                                                                                        "name": "Identifier",
                                                                                        "src": "15616:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5095,
                                                                                                "name": "Identifier",
                                                                                                "src": "15634:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5096,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "15634:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5097,
                                                                                "name": "IndexAccess",
                                                                                "src": "15616:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5098,
                                                                                "name": "Identifier",
                                                                                "src": "15650:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5099,
                                                                        "name": "IndexAccess",
                                                                        "src": "15616:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "timestamp",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -4,
                                                                                    "type": "block",
                                                                                    "value": "block"
                                                                                },
                                                                                "id": 5100,
                                                                                "name": "Identifier",
                                                                                "src": "15661:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 5101,
                                                                        "name": "MemberAccess",
                                                                        "src": "15661:15:16"
                                                                    }
                                                                ],
                                                                "id": 5102,
                                                                "name": "FunctionCall",
                                                                "src": "15570:107:16"
                                                            }
                                                        ],
                                                        "id": 5103,
                                                        "name": "EmitStatement",
                                                        "src": "15565:112:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5043,
                                                                            "type": "uint256",
                                                                            "value": "pos"
                                                                        },
                                                                        "id": 5104,
                                                                        "name": "Identifier",
                                                                        "src": "15692:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3785,
                                                                                    "type": "mapping(bytes32 => uint256)",
                                                                                    "value": "orders"
                                                                                },
                                                                                "id": 5105,
                                                                                "name": "Identifier",
                                                                                "src": "15698:6:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4904,
                                                                                    "type": "bytes32",
                                                                                    "value": "cref"
                                                                                },
                                                                                "id": 5106,
                                                                                "name": "Identifier",
                                                                                "src": "15705:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5107,
                                                                        "name": "IndexAccess",
                                                                        "src": "15698:12:16"
                                                                    }
                                                                ],
                                                                "id": 5108,
                                                                "name": "Assignment",
                                                                "src": "15692:18:16"
                                                            }
                                                        ],
                                                        "id": 5109,
                                                        "name": "ExpressionStatement",
                                                        "src": "15692:18:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "struct IMarginManager.tradePosition memory"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5040,
                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                            "value": "position"
                                                                        },
                                                                        "id": 5110,
                                                                        "name": "Identifier",
                                                                        "src": "15725:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "struct IMarginManager.tradePosition storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3775,
                                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                    "value": "positions"
                                                                                                },
                                                                                                "id": 5111,
                                                                                                "name": "Identifier",
                                                                                                "src": "15736:9:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4906,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 5112,
                                                                                                "name": "Identifier",
                                                                                                "src": "15746:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5113,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15736:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5114,
                                                                                        "name": "Identifier",
                                                                                        "src": "15756:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5115,
                                                                                "name": "IndexAccess",
                                                                                "src": "15736:29:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5043,
                                                                                    "type": "uint256",
                                                                                    "value": "pos"
                                                                                },
                                                                                "id": 5116,
                                                                                "name": "Identifier",
                                                                                "src": "15766:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5117,
                                                                        "name": "IndexAccess",
                                                                        "src": "15736:34:16"
                                                                    }
                                                                ],
                                                                "id": 5118,
                                                                "name": "Assignment",
                                                                "src": "15725:45:16"
                                                            }
                                                        ],
                                                        "id": 5119,
                                                        "name": "ExpressionStatement",
                                                        "src": "15725:45:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5120,
                                                                                        "name": "Identifier",
                                                                                        "src": "15785:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5121,
                                                                                                "name": "Identifier",
                                                                                                "src": "15803:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5122,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "15803:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5124,
                                                                                "name": "IndexAccess",
                                                                                "src": "15785:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5123,
                                                                                "name": "Identifier",
                                                                                "src": "15819:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5125,
                                                                        "name": "IndexAccess",
                                                                        "src": "15785:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "add",
                                                                                    "referencedDeclaration": 2150,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5126,
                                                                                        "name": "Identifier",
                                                                                        "src": "15831:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5127,
                                                                                "name": "MemberAccess",
                                                                                "src": "15831:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5128,
                                                                                                "name": "Identifier",
                                                                                                "src": "15840:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "buyer",
                                                                                                    "referencedDeclaration": 11359,
                                                                                                    "type": "address"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5040,
                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                            "value": "position"
                                                                                                        },
                                                                                                        "id": 5129,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "15858:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5130,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "15858:14:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5131,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15840:33:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5132,
                                                                                        "name": "Identifier",
                                                                                        "src": "15874:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5133,
                                                                                "name": "IndexAccess",
                                                                                "src": "15840:43:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5134,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "15885:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5135,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "15885:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "marginCollateral",
                                                                                            "referencedDeclaration": 11369,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5136,
                                                                                                "name": "Identifier",
                                                                                                "src": "15889:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5137,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "15889:25:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5138,
                                                                                "name": "FunctionCall",
                                                                                "src": "15885:30:16"
                                                                            }
                                                                        ],
                                                                        "id": 5139,
                                                                        "name": "FunctionCall",
                                                                        "src": "15831:85:16"
                                                                    }
                                                                ],
                                                                "id": 5140,
                                                                "name": "Assignment",
                                                                "src": "15785:131:16"
                                                            }
                                                        ],
                                                        "id": 5141,
                                                        "name": "ExpressionStatement",
                                                        "src": "15785:131:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "delete",
                                                                    "prefix": true,
                                                                    "type": "tuple()"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "struct IMarginManager.tradePosition storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3775,
                                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                                    "value": "positions"
                                                                                                },
                                                                                                "id": 5142,
                                                                                                "name": "Identifier",
                                                                                                "src": "15938:9:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 4906,
                                                                                                    "type": "address",
                                                                                                    "value": "security"
                                                                                                },
                                                                                                "id": 5143,
                                                                                                "name": "Identifier",
                                                                                                "src": "15948:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5144,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "15938:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 4910,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5145,
                                                                                        "name": "Identifier",
                                                                                        "src": "15958:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5146,
                                                                                "name": "IndexAccess",
                                                                                "src": "15938:29:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5043,
                                                                                    "type": "uint256",
                                                                                    "value": "pos"
                                                                                },
                                                                                "id": 5147,
                                                                                "name": "Identifier",
                                                                                "src": "15968:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5148,
                                                                        "name": "IndexAccess",
                                                                        "src": "15938:34:16"
                                                                    }
                                                                ],
                                                                "id": 5149,
                                                                "name": "UnaryOperation",
                                                                "src": "15931:41:16"
                                                            }
                                                        ],
                                                        "id": 5150,
                                                        "name": "ExpressionStatement",
                                                        "src": "15931:41:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "tuple()",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_stringliteral_f0ab6bbf074217bd209077ef38d1fe65034d0327dbceeb5dc94a0d7050798c99",
                                                                                    "typeString": "literal_string \"trade\""
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3855,
                                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                                            "value": "collateral"
                                                                        },
                                                                        "id": 5151,
                                                                        "name": "Identifier",
                                                                        "src": "15992:10:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "7472616465",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "string",
                                                                            "type": "literal_string \"trade\"",
                                                                            "value": "trade"
                                                                        },
                                                                        "id": 5152,
                                                                        "name": "Literal",
                                                                        "src": "16003:7:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "buyer",
                                                                            "referencedDeclaration": 11359,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5040,
                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                    "value": "position"
                                                                                },
                                                                                "id": 5153,
                                                                                "name": "Identifier",
                                                                                "src": "16012:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5154,
                                                                        "name": "MemberAccess",
                                                                        "src": "16012:14:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 4910,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5155,
                                                                        "name": "Identifier",
                                                                        "src": "16028:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5156,
                                                                                        "name": "Identifier",
                                                                                        "src": "16038:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5040,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5157,
                                                                                                "name": "Identifier",
                                                                                                "src": "16056:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5158,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "16056:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5159,
                                                                                "name": "IndexAccess",
                                                                                "src": "16038:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 4910,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5160,
                                                                                "name": "Identifier",
                                                                                "src": "16072:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5161,
                                                                        "name": "IndexAccess",
                                                                        "src": "16038:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "timestamp",
                                                                            "type": "uint256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": -4,
                                                                                    "type": "block",
                                                                                    "value": "block"
                                                                                },
                                                                                "id": 5162,
                                                                                "name": "Identifier",
                                                                                "src": "16083:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 5163,
                                                                        "name": "MemberAccess",
                                                                        "src": "16083:15:16"
                                                                    }
                                                                ],
                                                                "id": 5164,
                                                                "name": "FunctionCall",
                                                                "src": "15992:107:16"
                                                            }
                                                        ],
                                                        "id": 5165,
                                                        "name": "EmitStatement",
                                                        "src": "15987:112:16"
                                                    }
                                                ],
                                                "id": 5166,
                                                "name": "Block",
                                                "src": "15146:965:16"
                                            }
                                        ],
                                        "id": 5167,
                                        "name": "IfStatement",
                                        "src": "13947:2164:16"
                                    }
                                ],
                                "id": 5168,
                                "name": "Block",
                                "src": "13936:2182:16"
                            }
                        ],
                        "id": 5169,
                        "name": "FunctionDefinition",
                        "src": "13744:2374:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "tradeReport",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "orderbook",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5170,
                                                "name": "ElementaryTypeName",
                                                "src": "16147:7:16"
                                            }
                                        ],
                                        "id": 5171,
                                        "name": "VariableDeclaration",
                                        "src": "16147:17:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "ref",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 5172,
                                                "name": "ElementaryTypeName",
                                                "src": "16166:7:16"
                                            }
                                        ],
                                        "id": 5173,
                                        "name": "VariableDeclaration",
                                        "src": "16166:11:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "cref",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bytes32",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes32",
                                                    "type": "bytes32"
                                                },
                                                "id": 5174,
                                                "name": "ElementaryTypeName",
                                                "src": "16179:7:16"
                                            }
                                        ],
                                        "id": 5175,
                                        "name": "VariableDeclaration",
                                        "src": "16179:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "securityTraded",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5176,
                                                "name": "ElementaryTypeName",
                                                "src": "16193:7:16"
                                            }
                                        ],
                                        "id": 5177,
                                        "name": "VariableDeclaration",
                                        "src": "16193:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currencyTraded",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5178,
                                                "name": "ElementaryTypeName",
                                                "src": "16247:7:16"
                                            }
                                        ],
                                        "id": 5179,
                                        "name": "VariableDeclaration",
                                        "src": "16247:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "buyer",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5180,
                                                "name": "ElementaryTypeName",
                                                "src": "16271:7:16"
                                            }
                                        ],
                                        "id": 5181,
                                        "name": "VariableDeclaration",
                                        "src": "16271:13:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "pay",
                                            "scope": 5237,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5182,
                                                "name": "ElementaryTypeName",
                                                "src": "16286:7:16"
                                            }
                                        ],
                                        "id": 5183,
                                        "name": "VariableDeclaration",
                                        "src": "16286:11:16"
                                    }
                                ],
                                "id": 5184,
                                "name": "ParameterList",
                                "src": "16146:152:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5185,
                                "name": "ParameterList",
                                "src": "16307:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3809,
                                                            "type": "function (bytes32,address,address,uint256,address,address,uint256,bytes32,bytes32,uint256,uint256)",
                                                            "value": "tradeSettled"
                                                        },
                                                        "id": 5186,
                                                        "name": "Identifier",
                                                        "src": "16323:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "bytes32",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "getPoolId",
                                                                    "referencedDeclaration": 11555,
                                                                    "type": "function () view external returns (bytes32)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IMarginOrder",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 11607,
                                                                                    "type": "type(contract IMarginOrder)",
                                                                                    "value": "IMarginOrder"
                                                                                },
                                                                                "id": 5187,
                                                                                "name": "Identifier",
                                                                                "src": "16351:12:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5171,
                                                                                    "type": "address",
                                                                                    "value": "orderbook"
                                                                                },
                                                                                "id": 5188,
                                                                                "name": "Identifier",
                                                                                "src": "16364:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5189,
                                                                        "name": "FunctionCall",
                                                                        "src": "16351:23:16"
                                                                    }
                                                                ],
                                                                "id": 5190,
                                                                "name": "MemberAccess",
                                                                "src": "16351:33:16"
                                                            }
                                                        ],
                                                        "id": 5191,
                                                        "name": "FunctionCall",
                                                        "src": "16351:35:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "type": "address"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "==",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "party",
                                                                            "referencedDeclaration": 11542,
                                                                            "type": "address"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "struct IMarginOrder.order memory",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_bytes32",
                                                                                                    "typeString": "bytes32"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "getOrder",
                                                                                            "referencedDeclaration": 11572,
                                                                                            "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "contract IMarginOrder",
                                                                                                    "type_conversion": true
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                }
                                                                                                            ],
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 11607,
                                                                                                            "type": "type(contract IMarginOrder)",
                                                                                                            "value": "IMarginOrder"
                                                                                                        },
                                                                                                        "id": 5192,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "16401:12:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5171,
                                                                                                            "type": "address",
                                                                                                            "value": "orderbook"
                                                                                                        },
                                                                                                        "id": 5193,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "16414:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5194,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "16401:23:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5195,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "16401:32:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5173,
                                                                                            "type": "bytes32",
                                                                                            "value": "ref"
                                                                                        },
                                                                                        "id": 5196,
                                                                                        "name": "Identifier",
                                                                                        "src": "16434:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5197,
                                                                                "name": "FunctionCall",
                                                                                "src": "16401:37:16"
                                                                            }
                                                                        ],
                                                                        "id": 5198,
                                                                        "name": "MemberAccess",
                                                                        "src": "16401:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5181,
                                                                            "type": "address",
                                                                            "value": "buyer"
                                                                        },
                                                                        "id": 5199,
                                                                        "name": "Identifier",
                                                                        "src": "16446:5:16"
                                                                    }
                                                                ],
                                                                "id": 5200,
                                                                "name": "BinaryOperation",
                                                                "src": "16401:50:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "party",
                                                                    "referencedDeclaration": 11542,
                                                                    "type": "address"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "struct IMarginOrder.order memory",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "getOrder",
                                                                                    "referencedDeclaration": 11572,
                                                                                    "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IMarginOrder",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 11607,
                                                                                                    "type": "type(contract IMarginOrder)",
                                                                                                    "value": "IMarginOrder"
                                                                                                },
                                                                                                "id": 5201,
                                                                                                "name": "Identifier",
                                                                                                "src": "16487:12:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5171,
                                                                                                    "type": "address",
                                                                                                    "value": "orderbook"
                                                                                                },
                                                                                                "id": 5202,
                                                                                                "name": "Identifier",
                                                                                                "src": "16500:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5203,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "16487:23:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5204,
                                                                                "name": "MemberAccess",
                                                                                "src": "16487:32:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5175,
                                                                                    "type": "bytes32",
                                                                                    "value": "cref"
                                                                                },
                                                                                "id": 5205,
                                                                                "name": "Identifier",
                                                                                "src": "16520:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5206,
                                                                        "name": "FunctionCall",
                                                                        "src": "16487:38:16"
                                                                    }
                                                                ],
                                                                "id": 5207,
                                                                "name": "MemberAccess",
                                                                "src": "16487:44:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "party",
                                                                    "referencedDeclaration": 11542,
                                                                    "type": "address"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "struct IMarginOrder.order memory",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_bytes32",
                                                                                            "typeString": "bytes32"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "getOrder",
                                                                                    "referencedDeclaration": 11572,
                                                                                    "type": "function (bytes32) view external returns (struct IMarginOrder.order memory)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "contract IMarginOrder",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_address",
                                                                                                            "typeString": "address"
                                                                                                        }
                                                                                                    ],
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 11607,
                                                                                                    "type": "type(contract IMarginOrder)",
                                                                                                    "value": "IMarginOrder"
                                                                                                },
                                                                                                "id": 5208,
                                                                                                "name": "Identifier",
                                                                                                "src": "16567:12:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5171,
                                                                                                    "type": "address",
                                                                                                    "value": "orderbook"
                                                                                                },
                                                                                                "id": 5209,
                                                                                                "name": "Identifier",
                                                                                                "src": "16580:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5210,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "16567:23:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5211,
                                                                                "name": "MemberAccess",
                                                                                "src": "16567:32:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5173,
                                                                                    "type": "bytes32",
                                                                                    "value": "ref"
                                                                                },
                                                                                "id": 5212,
                                                                                "name": "Identifier",
                                                                                "src": "16600:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5213,
                                                                        "name": "FunctionCall",
                                                                        "src": "16567:37:16"
                                                                    }
                                                                ],
                                                                "id": 5214,
                                                                "name": "MemberAccess",
                                                                "src": "16567:43:16"
                                                            }
                                                        ],
                                                        "id": 5215,
                                                        "name": "Conditional",
                                                        "src": "16401:209:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5181,
                                                            "type": "address",
                                                            "value": "buyer"
                                                        },
                                                        "id": 5216,
                                                        "name": "Identifier",
                                                        "src": "16625:5:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5177,
                                                            "type": "uint256",
                                                            "value": "securityTraded"
                                                        },
                                                        "id": 5217,
                                                        "name": "Identifier",
                                                        "src": "16645:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "getSecurity",
                                                                    "referencedDeclaration": 11560,
                                                                    "type": "function () view external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IMarginOrder",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 11607,
                                                                                    "type": "type(contract IMarginOrder)",
                                                                                    "value": "IMarginOrder"
                                                                                },
                                                                                "id": 5218,
                                                                                "name": "Identifier",
                                                                                "src": "16674:12:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5171,
                                                                                    "type": "address",
                                                                                    "value": "orderbook"
                                                                                },
                                                                                "id": 5219,
                                                                                "name": "Identifier",
                                                                                "src": "16687:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5220,
                                                                        "name": "FunctionCall",
                                                                        "src": "16674:23:16"
                                                                    }
                                                                ],
                                                                "id": 5221,
                                                                "name": "MemberAccess",
                                                                "src": "16674:35:16"
                                                            }
                                                        ],
                                                        "id": 5222,
                                                        "name": "FunctionCall",
                                                        "src": "16674:37:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "arguments": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "getCurrency",
                                                                    "referencedDeclaration": 11565,
                                                                    "type": "function () view external returns (address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "contract IMarginOrder",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 11607,
                                                                                    "type": "type(contract IMarginOrder)",
                                                                                    "value": "IMarginOrder"
                                                                                },
                                                                                "id": 5223,
                                                                                "name": "Identifier",
                                                                                "src": "16726:12:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5171,
                                                                                    "type": "address",
                                                                                    "value": "orderbook"
                                                                                },
                                                                                "id": 5224,
                                                                                "name": "Identifier",
                                                                                "src": "16739:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5225,
                                                                        "name": "FunctionCall",
                                                                        "src": "16726:23:16"
                                                                    }
                                                                ],
                                                                "id": 5226,
                                                                "name": "MemberAccess",
                                                                "src": "16726:35:16"
                                                            }
                                                        ],
                                                        "id": 5227,
                                                        "name": "FunctionCall",
                                                        "src": "16726:37:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5179,
                                                            "type": "uint256",
                                                            "value": "currencyTraded"
                                                        },
                                                        "id": 5228,
                                                        "name": "Identifier",
                                                        "src": "16778:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5175,
                                                            "type": "bytes32",
                                                            "value": "cref"
                                                        },
                                                        "id": 5229,
                                                        "name": "Identifier",
                                                        "src": "16807:4:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5173,
                                                            "type": "bytes32",
                                                            "value": "ref"
                                                        },
                                                        "id": 5230,
                                                        "name": "Identifier",
                                                        "src": "16826:3:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5183,
                                                            "type": "uint256",
                                                            "value": "pay"
                                                        },
                                                        "id": 5231,
                                                        "name": "Identifier",
                                                        "src": "16844:3:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 5232,
                                                                "name": "Identifier",
                                                                "src": "16862:5:16"
                                                            }
                                                        ],
                                                        "id": 5233,
                                                        "name": "MemberAccess",
                                                        "src": "16862:15:16"
                                                    }
                                                ],
                                                "id": 5234,
                                                "name": "FunctionCall",
                                                "src": "16323:565:16"
                                            }
                                        ],
                                        "id": 5235,
                                        "name": "EmitStatement",
                                        "src": "16318:570:16"
                                    }
                                ],
                                "id": 5236,
                                "name": "Block",
                                "src": "16307:589:16"
                            }
                        ],
                        "id": 5237,
                        "name": "FunctionDefinition",
                        "src": "16126:770:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "calculateFee",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "pool",
                                            "scope": 5279,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5238,
                                                "name": "ElementaryTypeName",
                                                "src": "16934:7:16"
                                            }
                                        ],
                                        "id": 5239,
                                        "name": "VariableDeclaration",
                                        "src": "16934:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 5279,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5240,
                                                "name": "ElementaryTypeName",
                                                "src": "16948:7:16"
                                            }
                                        ],
                                        "id": 5241,
                                        "name": "VariableDeclaration",
                                        "src": "16948:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currencyTraded",
                                            "scope": 5279,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5242,
                                                "name": "ElementaryTypeName",
                                                "src": "16966:7:16"
                                            }
                                        ],
                                        "id": 5243,
                                        "name": "VariableDeclaration",
                                        "src": "16966:22:16"
                                    }
                                ],
                                "id": 5244,
                                "name": "ParameterList",
                                "src": "16933:56:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 5279,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5245,
                                                "name": "ElementaryTypeName",
                                                "src": "17006:7:16"
                                            }
                                        ],
                                        "id": 5246,
                                        "name": "VariableDeclaration",
                                        "src": "17006:7:16"
                                    }
                                ],
                                "id": 5247,
                                "name": "ParameterList",
                                "src": "17005:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                5249
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "fee",
                                                    "scope": 5278,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 5248,
                                                        "name": "ElementaryTypeName",
                                                        "src": "17025:7:16"
                                                    }
                                                ],
                                                "id": 5249,
                                                "name": "VariableDeclaration",
                                                "src": "17025:11:16"
                                            },
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "getFee",
                                                            "referencedDeclaration": 11650,
                                                            "type": "function () view external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IMarginTradingPool",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 11651,
                                                                            "type": "type(contract IMarginTradingPool)",
                                                                            "value": "IMarginTradingPool"
                                                                        },
                                                                        "id": 5250,
                                                                        "name": "Identifier",
                                                                        "src": "17039:18:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5239,
                                                                            "type": "address",
                                                                            "value": "pool"
                                                                        },
                                                                        "id": 5251,
                                                                        "name": "Identifier",
                                                                        "src": "17058:4:16"
                                                                    }
                                                                ],
                                                                "id": 5252,
                                                                "name": "FunctionCall",
                                                                "src": "17039:24:16"
                                                            }
                                                        ],
                                                        "id": 5253,
                                                        "name": "MemberAccess",
                                                        "src": "17039:31:16"
                                                    }
                                                ],
                                                "id": 5254,
                                                "name": "FunctionCall",
                                                "src": "17039:33:16"
                                            }
                                        ],
                                        "id": 5255,
                                        "name": "VariableDeclarationStatement",
                                        "src": "17025:47:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5249,
                                                            "type": "uint256",
                                                            "value": "fee"
                                                        },
                                                        "id": 5256,
                                                        "name": "Identifier",
                                                        "src": "17083:3:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "mulDown",
                                                                    "referencedDeclaration": 537,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 780,
                                                                            "type": "type(library FixedPoint)",
                                                                            "value": "FixedPoint"
                                                                        },
                                                                        "id": 5257,
                                                                        "name": "Identifier",
                                                                        "src": "17089:10:16"
                                                                    }
                                                                ],
                                                                "id": 5258,
                                                                "name": "MemberAccess",
                                                                "src": "17089:18:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5243,
                                                                    "type": "uint256",
                                                                    "value": "currencyTraded"
                                                                },
                                                                "id": 5259,
                                                                "name": "Identifier",
                                                                "src": "17108:14:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5249,
                                                                    "type": "uint256",
                                                                    "value": "fee"
                                                                },
                                                                "id": 5260,
                                                                "name": "Identifier",
                                                                "src": "17124:3:16"
                                                            }
                                                        ],
                                                        "id": 5261,
                                                        "name": "FunctionCall",
                                                        "src": "17089:39:16"
                                                    }
                                                ],
                                                "id": 5262,
                                                "name": "Assignment",
                                                "src": "17083:45:16"
                                            }
                                        ],
                                        "id": 5263,
                                        "name": "ExpressionStatement",
                                        "src": "17083:45:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3747,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "fees"
                                                                },
                                                                "id": 5264,
                                                                "name": "Identifier",
                                                                "src": "17300:4:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5241,
                                                                    "type": "address",
                                                                    "value": "currency"
                                                                },
                                                                "id": 5265,
                                                                "name": "Identifier",
                                                                "src": "17305:8:16"
                                                            }
                                                        ],
                                                        "id": 5266,
                                                        "name": "IndexAccess",
                                                        "src": "17300:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "add",
                                                                    "referencedDeclaration": 2109,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2367,
                                                                            "type": "type(library Math)",
                                                                            "value": "Math"
                                                                        },
                                                                        "id": 5267,
                                                                        "name": "Identifier",
                                                                        "src": "17317:4:16"
                                                                    }
                                                                ],
                                                                "id": 5268,
                                                                "name": "MemberAccess",
                                                                "src": "17317:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3747,
                                                                            "type": "mapping(address => uint256)",
                                                                            "value": "fees"
                                                                        },
                                                                        "id": 5269,
                                                                        "name": "Identifier",
                                                                        "src": "17326:4:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5241,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5270,
                                                                        "name": "Identifier",
                                                                        "src": "17331:8:16"
                                                                    }
                                                                ],
                                                                "id": 5271,
                                                                "name": "IndexAccess",
                                                                "src": "17326:14:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5249,
                                                                    "type": "uint256",
                                                                    "value": "fee"
                                                                },
                                                                "id": 5272,
                                                                "name": "Identifier",
                                                                "src": "17342:3:16"
                                                            }
                                                        ],
                                                        "id": 5273,
                                                        "name": "FunctionCall",
                                                        "src": "17317:29:16"
                                                    }
                                                ],
                                                "id": 5274,
                                                "name": "Assignment",
                                                "src": "17300:46:16"
                                            }
                                        ],
                                        "id": 5275,
                                        "name": "ExpressionStatement",
                                        "src": "17300:46:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 5247
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 5249,
                                                    "type": "uint256",
                                                    "value": "fee"
                                                },
                                                "id": 5276,
                                                "name": "Identifier",
                                                "src": "17364:3:16"
                                            }
                                        ],
                                        "id": 5277,
                                        "name": "Return",
                                        "src": "17357:10:16"
                                    }
                                ],
                                "id": 5278,
                                "name": "Block",
                                "src": "17014:361:16"
                            }
                        ],
                        "id": 5279,
                        "name": "FunctionDefinition",
                        "src": "16912:463:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11482
                            ],
                            "functionSelector": "20f55dfe",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "onSettle",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 5299,
                                "name": "OverrideSpecifier",
                                "src": "17606:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5280,
                                                "name": "ElementaryTypeName",
                                                "src": "17401:7:16"
                                            }
                                        ],
                                        "id": 5281,
                                        "name": "VariableDeclaration",
                                        "src": "17401:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5282,
                                                "name": "ElementaryTypeName",
                                                "src": "17419:7:16"
                                            }
                                        ],
                                        "id": 5283,
                                        "name": "VariableDeclaration",
                                        "src": "17419:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "financingBidPerSec",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5284,
                                                "name": "ElementaryTypeName",
                                                "src": "17437:6:16"
                                            }
                                        ],
                                        "id": 5285,
                                        "name": "VariableDeclaration",
                                        "src": "17437:25:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "financingOfferPerSec",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5286,
                                                "name": "ElementaryTypeName",
                                                "src": "17464:6:16"
                                            }
                                        ],
                                        "id": 5287,
                                        "name": "VariableDeclaration",
                                        "src": "17464:27:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dividendBidPerSec",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5288,
                                                "name": "ElementaryTypeName",
                                                "src": "17493:6:16"
                                            }
                                        ],
                                        "id": 5289,
                                        "name": "VariableDeclaration",
                                        "src": "17493:24:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dividendOfferPerSec",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5290,
                                                "name": "ElementaryTypeName",
                                                "src": "17519:6:16"
                                            }
                                        ],
                                        "id": 5291,
                                        "name": "VariableDeclaration",
                                        "src": "17519:26:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "swapLong",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5292,
                                                "name": "ElementaryTypeName",
                                                "src": "17547:6:16"
                                            }
                                        ],
                                        "id": 5293,
                                        "name": "VariableDeclaration",
                                        "src": "17547:15:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "swapShort",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5294,
                                                "name": "ElementaryTypeName",
                                                "src": "17564:6:16"
                                            }
                                        ],
                                        "id": 5295,
                                        "name": "VariableDeclaration",
                                        "src": "17564:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "settlementTime",
                                            "scope": 5382,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5296,
                                                "name": "ElementaryTypeName",
                                                "src": "17582:7:16"
                                            }
                                        ],
                                        "id": 5297,
                                        "name": "VariableDeclaration",
                                        "src": "17582:22:16"
                                    }
                                ],
                                "id": 5298,
                                "name": "ParameterList",
                                "src": "17400:205:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5305,
                                "name": "ParameterList",
                                "src": "17662:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3893,
                                            "type": "modifier (address,address)",
                                            "value": "onlyIssueManager"
                                        },
                                        "id": 5300,
                                        "name": "Identifier",
                                        "src": "17624:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 5301,
                                                "name": "Identifier",
                                                "src": "17641:3:16"
                                            }
                                        ],
                                        "id": 5302,
                                        "name": "MemberAccess",
                                        "src": "17641:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 5281,
                                            "type": "address",
                                            "value": "security"
                                        },
                                        "id": 5303,
                                        "name": "Identifier",
                                        "src": "17653:8:16"
                                    }
                                ],
                                "id": 5304,
                                "name": "ModifierInvocation",
                                "src": "17624:38:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "assignments": [
                                                        5307
                                                    ]
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "constant": false,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "scope": 5380,
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "type": "uint256",
                                                            "visibility": "internal"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "uint256",
                                                                    "type": "uint256"
                                                                },
                                                                "id": 5306,
                                                                "name": "ElementaryTypeName",
                                                                "src": "17677:7:16"
                                                            }
                                                        ],
                                                        "id": 5307,
                                                        "name": "VariableDeclaration",
                                                        "src": "17677:9:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5308,
                                                        "name": "Literal",
                                                        "src": "17687:1:16"
                                                    }
                                                ],
                                                "id": 5309,
                                                "name": "VariableDeclarationStatement",
                                                "src": "17677:11:16"
                                            },
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "<",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5307,
                                                            "type": "uint256",
                                                            "value": "i"
                                                        },
                                                        "id": 5310,
                                                        "name": "Identifier",
                                                        "src": "17690:1:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "length",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3775,
                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                    "value": "positions"
                                                                                },
                                                                                "id": 5311,
                                                                                "name": "Identifier",
                                                                                "src": "17692:9:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5281,
                                                                                    "type": "address",
                                                                                    "value": "security"
                                                                                },
                                                                                "id": 5312,
                                                                                "name": "Identifier",
                                                                                "src": "17702:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5313,
                                                                        "name": "IndexAccess",
                                                                        "src": "17692:19:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5283,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5314,
                                                                        "name": "Identifier",
                                                                        "src": "17712:8:16"
                                                                    }
                                                                ],
                                                                "id": 5315,
                                                                "name": "IndexAccess",
                                                                "src": "17692:29:16"
                                                            }
                                                        ],
                                                        "id": 5316,
                                                        "name": "MemberAccess",
                                                        "src": "17692:36:16"
                                                    }
                                                ],
                                                "id": 5317,
                                                "name": "BinaryOperation",
                                                "src": "17690:38:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5307,
                                                                    "type": "uint256",
                                                                    "value": "i"
                                                                },
                                                                "id": 5318,
                                                                "name": "Identifier",
                                                                "src": "17730:1:16"
                                                            }
                                                        ],
                                                        "id": 5319,
                                                        "name": "UnaryOperation",
                                                        "src": "17730:3:16"
                                                    }
                                                ],
                                                "id": 5320,
                                                "name": "ExpressionStatement",
                                                "src": "17730:3:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                5324
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "position",
                                                                    "scope": 5379,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "type": "struct IMarginManager.tradePosition",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "IMarginManager.tradePosition",
                                                                            "referencedDeclaration": 11372,
                                                                            "type": "struct IMarginManager.tradePosition"
                                                                        },
                                                                        "id": 5323,
                                                                        "name": "UserDefinedTypeName",
                                                                        "src": "17749:28:16"
                                                                    }
                                                                ],
                                                                "id": 5324,
                                                                "name": "VariableDeclaration",
                                                                "src": "17749:44:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "struct IMarginManager.tradePosition storage ref"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3775,
                                                                                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                            "value": "positions"
                                                                                        },
                                                                                        "id": 5325,
                                                                                        "name": "Identifier",
                                                                                        "src": "17796:9:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5281,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 5326,
                                                                                        "name": "Identifier",
                                                                                        "src": "17806:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5327,
                                                                                "name": "IndexAccess",
                                                                                "src": "17796:19:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5283,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5328,
                                                                                "name": "Identifier",
                                                                                "src": "17816:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5329,
                                                                        "name": "IndexAccess",
                                                                        "src": "17796:29:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5307,
                                                                            "type": "uint256",
                                                                            "value": "i"
                                                                        },
                                                                        "id": 5330,
                                                                        "name": "Identifier",
                                                                        "src": "17826:1:16"
                                                                    }
                                                                ],
                                                                "id": 5331,
                                                                "name": "IndexAccess",
                                                                "src": "17796:32:16"
                                                            }
                                                        ],
                                                        "id": 5332,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "17749:79:16"
                                                    },
                                                    {
                                                        "attributes": {},
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": ">",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5333,
                                                                                        "name": "Identifier",
                                                                                        "src": "17846:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5334,
                                                                                                "name": "Identifier",
                                                                                                "src": "17864:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5335,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "17864:14:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5336,
                                                                                "name": "IndexAccess",
                                                                                "src": "17846:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5283,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5337,
                                                                                "name": "Identifier",
                                                                                "src": "17880:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5338,
                                                                        "name": "IndexAccess",
                                                                        "src": "17846:43:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 5339,
                                                                        "name": "Literal",
                                                                        "src": "17890:1:16"
                                                                    }
                                                                ],
                                                                "id": 5340,
                                                                "name": "BinaryOperation",
                                                                "src": "17846:45:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "tuple()",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5614,
                                                                                            "type": "function (address,address,address,int256,int256,int256,uint256,uint256)",
                                                                                            "value": "buyerCollateralBalance"
                                                                                        },
                                                                                        "id": 5341,
                                                                                        "name": "Identifier",
                                                                                        "src": "17911:22:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "buyer",
                                                                                            "referencedDeclaration": 11359,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5342,
                                                                                                "name": "Identifier",
                                                                                                "src": "17934:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5343,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "17934:14:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5281,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 5344,
                                                                                        "name": "Identifier",
                                                                                        "src": "17950:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5283,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5345,
                                                                                        "name": "Identifier",
                                                                                        "src": "17960:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5287,
                                                                                            "type": "int256",
                                                                                            "value": "financingOfferPerSec"
                                                                                        },
                                                                                        "id": 5346,
                                                                                        "name": "Identifier",
                                                                                        "src": "17970:20:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5291,
                                                                                            "type": "int256",
                                                                                            "value": "dividendOfferPerSec"
                                                                                        },
                                                                                        "id": 5347,
                                                                                        "name": "Identifier",
                                                                                        "src": "17992:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5293,
                                                                                            "type": "int256",
                                                                                            "value": "swapLong"
                                                                                        },
                                                                                        "id": 5348,
                                                                                        "name": "Identifier",
                                                                                        "src": "18013:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5297,
                                                                                            "type": "uint256",
                                                                                            "value": "settlementTime"
                                                                                        },
                                                                                        "id": 5349,
                                                                                        "name": "Identifier",
                                                                                        "src": "18023:14:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "timestamp",
                                                                                            "referencedDeclaration": 11371,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5350,
                                                                                                "name": "Identifier",
                                                                                                "src": "18039:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5351,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "18039:18:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5352,
                                                                                "name": "FunctionCall",
                                                                                "src": "17911:147:16"
                                                                            }
                                                                        ],
                                                                        "id": 5353,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "17911:147:16"
                                                                    }
                                                                ],
                                                                "id": 5354,
                                                                "name": "Block",
                                                                "src": "17892:194:16"
                                                            }
                                                        ],
                                                        "id": 5355,
                                                        "name": "IfStatement",
                                                        "src": "17843:243:16"
                                                    },
                                                    {
                                                        "attributes": {},
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": ">",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5356,
                                                                                        "name": "Identifier",
                                                                                        "src": "18103:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "seller",
                                                                                            "referencedDeclaration": 11361,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5357,
                                                                                                "name": "Identifier",
                                                                                                "src": "18121:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5358,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "18121:15:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5359,
                                                                                "name": "IndexAccess",
                                                                                "src": "18103:34:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5283,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5360,
                                                                                "name": "Identifier",
                                                                                "src": "18138:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5361,
                                                                        "name": "IndexAccess",
                                                                        "src": "18103:44:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 5362,
                                                                        "name": "Literal",
                                                                        "src": "18148:1:16"
                                                                    }
                                                                ],
                                                                "id": 5363,
                                                                "name": "BinaryOperation",
                                                                "src": "18103:46:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "tuple()",
                                                                                    "type_conversion": false
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_address",
                                                                                                    "typeString": "address"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_int256",
                                                                                                    "typeString": "int256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5846,
                                                                                            "type": "function (address,address,address,int256,int256,int256,uint256,uint256)",
                                                                                            "value": "sellerCollateralBalance"
                                                                                        },
                                                                                        "id": 5364,
                                                                                        "name": "Identifier",
                                                                                        "src": "18169:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "seller",
                                                                                            "referencedDeclaration": 11361,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5365,
                                                                                                "name": "Identifier",
                                                                                                "src": "18193:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5366,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "18193:15:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5281,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 5367,
                                                                                        "name": "Identifier",
                                                                                        "src": "18210:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5283,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5368,
                                                                                        "name": "Identifier",
                                                                                        "src": "18220:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5285,
                                                                                            "type": "int256",
                                                                                            "value": "financingBidPerSec"
                                                                                        },
                                                                                        "id": 5369,
                                                                                        "name": "Identifier",
                                                                                        "src": "18230:18:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5289,
                                                                                            "type": "int256",
                                                                                            "value": "dividendBidPerSec"
                                                                                        },
                                                                                        "id": 5370,
                                                                                        "name": "Identifier",
                                                                                        "src": "18250:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5295,
                                                                                            "type": "int256",
                                                                                            "value": "swapShort"
                                                                                        },
                                                                                        "id": 5371,
                                                                                        "name": "Identifier",
                                                                                        "src": "18269:9:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5297,
                                                                                            "type": "uint256",
                                                                                            "value": "settlementTime"
                                                                                        },
                                                                                        "id": 5372,
                                                                                        "name": "Identifier",
                                                                                        "src": "18280:14:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "timestamp",
                                                                                            "referencedDeclaration": 11371,
                                                                                            "type": "uint256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5324,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 5373,
                                                                                                "name": "Identifier",
                                                                                                "src": "18296:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5374,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "18296:18:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5375,
                                                                                "name": "FunctionCall",
                                                                                "src": "18169:146:16"
                                                                            }
                                                                        ],
                                                                        "id": 5376,
                                                                        "name": "ExpressionStatement",
                                                                        "src": "18169:146:16"
                                                                    }
                                                                ],
                                                                "id": 5377,
                                                                "name": "Block",
                                                                "src": "18150:181:16"
                                                            }
                                                        ],
                                                        "id": 5378,
                                                        "name": "IfStatement",
                                                        "src": "18100:231:16"
                                                    }
                                                ],
                                                "id": 5379,
                                                "name": "Block",
                                                "src": "17734:608:16"
                                            }
                                        ],
                                        "id": 5380,
                                        "name": "ForStatement",
                                        "src": "17673:669:16"
                                    }
                                ],
                                "id": 5381,
                                "name": "Block",
                                "src": "17662:1168:16"
                            }
                        ],
                        "id": 5382,
                        "name": "FunctionDefinition",
                        "src": "17383:1447:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "buyerCollateralBalance",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5383,
                                                "name": "ElementaryTypeName",
                                                "src": "18874:7:16"
                                            }
                                        ],
                                        "id": 5384,
                                        "name": "VariableDeclaration",
                                        "src": "18874:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5385,
                                                "name": "ElementaryTypeName",
                                                "src": "18888:7:16"
                                            }
                                        ],
                                        "id": 5386,
                                        "name": "VariableDeclaration",
                                        "src": "18888:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5387,
                                                "name": "ElementaryTypeName",
                                                "src": "18906:7:16"
                                            }
                                        ],
                                        "id": 5388,
                                        "name": "VariableDeclaration",
                                        "src": "18906:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "financingOfferPerSec",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5389,
                                                "name": "ElementaryTypeName",
                                                "src": "18924:6:16"
                                            }
                                        ],
                                        "id": 5390,
                                        "name": "VariableDeclaration",
                                        "src": "18924:27:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dividendOfferPerSec",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5391,
                                                "name": "ElementaryTypeName",
                                                "src": "18953:6:16"
                                            }
                                        ],
                                        "id": 5392,
                                        "name": "VariableDeclaration",
                                        "src": "18953:26:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "swapLong",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5393,
                                                "name": "ElementaryTypeName",
                                                "src": "18981:6:16"
                                            }
                                        ],
                                        "id": 5394,
                                        "name": "VariableDeclaration",
                                        "src": "18981:15:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "settlementTime",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5395,
                                                "name": "ElementaryTypeName",
                                                "src": "18998:7:16"
                                            }
                                        ],
                                        "id": 5396,
                                        "name": "VariableDeclaration",
                                        "src": "18998:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 5614,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5397,
                                                "name": "ElementaryTypeName",
                                                "src": "19022:7:16"
                                            }
                                        ],
                                        "id": 5398,
                                        "name": "VariableDeclaration",
                                        "src": "19022:17:16"
                                    }
                                ],
                                "id": 5399,
                                "name": "ParameterList",
                                "src": "18873:167:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5400,
                                "name": "ParameterList",
                                "src": "19049:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5390,
                                                            "type": "int256",
                                                            "value": "financingOfferPerSec"
                                                        },
                                                        "id": 5401,
                                                        "name": "Identifier",
                                                        "src": "19063:20:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5402,
                                                        "name": "Literal",
                                                        "src": "19086:1:16"
                                                    }
                                                ],
                                                "id": 5403,
                                                "name": "BinaryOperation",
                                                "src": "19063:24:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5404,
                                                                                "name": "Identifier",
                                                                                "src": "19102:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5384,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5405,
                                                                                "name": "Identifier",
                                                                                "src": "19120:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5407,
                                                                        "name": "IndexAccess",
                                                                        "src": "19102:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5388,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5406,
                                                                        "name": "Identifier",
                                                                        "src": "19126:8:16"
                                                                    }
                                                                ],
                                                                "id": 5408,
                                                                "name": "IndexAccess",
                                                                "src": "19102:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sub",
                                                                            "referencedDeclaration": 2218,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5409,
                                                                                "name": "Identifier",
                                                                                "src": "19138:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5410,
                                                                        "name": "MemberAccess",
                                                                        "src": "19138:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5411,
                                                                                        "name": "Identifier",
                                                                                        "src": "19147:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5412,
                                                                                        "name": "Identifier",
                                                                                        "src": "19165:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5413,
                                                                                "name": "IndexAccess",
                                                                                "src": "19147:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5414,
                                                                                "name": "Identifier",
                                                                                "src": "19171:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5415,
                                                                        "name": "IndexAccess",
                                                                        "src": "19147:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5390,
                                                                                    "type": "int256",
                                                                                    "value": "financingOfferPerSec"
                                                                                },
                                                                                "id": 5416,
                                                                                "name": "Identifier",
                                                                                "src": "19182:20:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5417,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "19205:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5418,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "19205:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5419,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19209:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5420,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "19209:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5396,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5421,
                                                                                                "name": "Identifier",
                                                                                                "src": "19218:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5398,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5422,
                                                                                                "name": "Identifier",
                                                                                                "src": "19234:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5423,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "19209:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5424,
                                                                                "name": "FunctionCall",
                                                                                "src": "19205:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5425,
                                                                        "name": "BinaryOperation",
                                                                        "src": "19182:63:16"
                                                                    }
                                                                ],
                                                                "id": 5426,
                                                                "name": "FunctionCall",
                                                                "src": "19138:108:16"
                                                            }
                                                        ],
                                                        "id": 5427,
                                                        "name": "Assignment",
                                                        "src": "19102:144:16"
                                                    }
                                                ],
                                                "id": 5428,
                                                "name": "ExpressionStatement",
                                                "src": "19102:144:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5390,
                                                                    "type": "int256",
                                                                    "value": "financingOfferPerSec"
                                                                },
                                                                "id": 5429,
                                                                "name": "Identifier",
                                                                "src": "19265:20:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5430,
                                                                "name": "Literal",
                                                                "src": "19288:1:16"
                                                            }
                                                        ],
                                                        "id": 5431,
                                                        "name": "BinaryOperation",
                                                        "src": "19265:24:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5432,
                                                                                        "name": "Identifier",
                                                                                        "src": "19304:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5433,
                                                                                        "name": "Identifier",
                                                                                        "src": "19322:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5435,
                                                                                "name": "IndexAccess",
                                                                                "src": "19304:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5434,
                                                                                "name": "Identifier",
                                                                                "src": "19328:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5436,
                                                                        "name": "IndexAccess",
                                                                        "src": "19304:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "add",
                                                                                    "referencedDeclaration": 2150,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5437,
                                                                                        "name": "Identifier",
                                                                                        "src": "19340:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5438,
                                                                                "name": "MemberAccess",
                                                                                "src": "19340:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5439,
                                                                                                "name": "Identifier",
                                                                                                "src": "19349:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5384,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5440,
                                                                                                "name": "Identifier",
                                                                                                "src": "19367:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5441,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "19349:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5388,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5442,
                                                                                        "name": "Identifier",
                                                                                        "src": "19373:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5443,
                                                                                "name": "IndexAccess",
                                                                                "src": "19349:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5390,
                                                                                            "type": "int256",
                                                                                            "value": "financingOfferPerSec"
                                                                                        },
                                                                                        "id": 5444,
                                                                                        "name": "Identifier",
                                                                                        "src": "19384:20:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5445,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "19407:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5446,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "19407:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5447,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "19411:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5448,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "19411:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5396,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5449,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19420:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5398,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5450,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19436:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5451,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "19411:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5452,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "19407:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5453,
                                                                                "name": "BinaryOperation",
                                                                                "src": "19384:63:16"
                                                                            }
                                                                        ],
                                                                        "id": 5454,
                                                                        "name": "FunctionCall",
                                                                        "src": "19340:108:16"
                                                                    }
                                                                ],
                                                                "id": 5455,
                                                                "name": "Assignment",
                                                                "src": "19304:144:16"
                                                            }
                                                        ],
                                                        "id": 5456,
                                                        "name": "ExpressionStatement",
                                                        "src": "19304:144:16"
                                                    }
                                                ],
                                                "id": 5457,
                                                "name": "IfStatement",
                                                "src": "19262:186:16"
                                            }
                                        ],
                                        "id": 5458,
                                        "name": "IfStatement",
                                        "src": "19060:388:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5392,
                                                            "type": "int256",
                                                            "value": "dividendOfferPerSec"
                                                        },
                                                        "id": 5459,
                                                        "name": "Identifier",
                                                        "src": "19462:19:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5460,
                                                        "name": "Literal",
                                                        "src": "19484:1:16"
                                                    }
                                                ],
                                                "id": 5461,
                                                "name": "BinaryOperation",
                                                "src": "19462:23:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5462,
                                                                                "name": "Identifier",
                                                                                "src": "19500:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5384,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5463,
                                                                                "name": "Identifier",
                                                                                "src": "19518:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5465,
                                                                        "name": "IndexAccess",
                                                                        "src": "19500:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5388,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5464,
                                                                        "name": "Identifier",
                                                                        "src": "19524:8:16"
                                                                    }
                                                                ],
                                                                "id": 5466,
                                                                "name": "IndexAccess",
                                                                "src": "19500:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sub",
                                                                            "referencedDeclaration": 2218,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5467,
                                                                                "name": "Identifier",
                                                                                "src": "19536:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5468,
                                                                        "name": "MemberAccess",
                                                                        "src": "19536:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5469,
                                                                                        "name": "Identifier",
                                                                                        "src": "19545:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5470,
                                                                                        "name": "Identifier",
                                                                                        "src": "19563:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5471,
                                                                                "name": "IndexAccess",
                                                                                "src": "19545:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5472,
                                                                                "name": "Identifier",
                                                                                "src": "19569:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5473,
                                                                        "name": "IndexAccess",
                                                                        "src": "19545:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5392,
                                                                                    "type": "int256",
                                                                                    "value": "dividendOfferPerSec"
                                                                                },
                                                                                "id": 5474,
                                                                                "name": "Identifier",
                                                                                "src": "19580:19:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5475,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "19602:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5476,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "19602:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5477,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19606:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5478,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "19606:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5396,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5479,
                                                                                                "name": "Identifier",
                                                                                                "src": "19615:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5398,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5480,
                                                                                                "name": "Identifier",
                                                                                                "src": "19631:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5481,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "19606:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5482,
                                                                                "name": "FunctionCall",
                                                                                "src": "19602:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5483,
                                                                        "name": "BinaryOperation",
                                                                        "src": "19580:62:16"
                                                                    }
                                                                ],
                                                                "id": 5484,
                                                                "name": "FunctionCall",
                                                                "src": "19536:107:16"
                                                            }
                                                        ],
                                                        "id": 5485,
                                                        "name": "Assignment",
                                                        "src": "19500:143:16"
                                                    }
                                                ],
                                                "id": 5486,
                                                "name": "ExpressionStatement",
                                                "src": "19500:143:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5392,
                                                                    "type": "int256",
                                                                    "value": "dividendOfferPerSec"
                                                                },
                                                                "id": 5487,
                                                                "name": "Identifier",
                                                                "src": "19662:19:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5488,
                                                                "name": "Literal",
                                                                "src": "19684:1:16"
                                                            }
                                                        ],
                                                        "id": 5489,
                                                        "name": "BinaryOperation",
                                                        "src": "19662:23:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5490,
                                                                                        "name": "Identifier",
                                                                                        "src": "19700:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5491,
                                                                                        "name": "Identifier",
                                                                                        "src": "19718:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5493,
                                                                                "name": "IndexAccess",
                                                                                "src": "19700:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5492,
                                                                                "name": "Identifier",
                                                                                "src": "19724:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5494,
                                                                        "name": "IndexAccess",
                                                                        "src": "19700:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "add",
                                                                                    "referencedDeclaration": 2150,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5495,
                                                                                        "name": "Identifier",
                                                                                        "src": "19736:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5496,
                                                                                "name": "MemberAccess",
                                                                                "src": "19736:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5497,
                                                                                                "name": "Identifier",
                                                                                                "src": "19745:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5384,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5498,
                                                                                                "name": "Identifier",
                                                                                                "src": "19763:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5499,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "19745:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5388,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5500,
                                                                                        "name": "Identifier",
                                                                                        "src": "19769:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5501,
                                                                                "name": "IndexAccess",
                                                                                "src": "19745:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5392,
                                                                                            "type": "int256",
                                                                                            "value": "dividendOfferPerSec"
                                                                                        },
                                                                                        "id": 5502,
                                                                                        "name": "Identifier",
                                                                                        "src": "19780:19:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5503,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "19802:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5504,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "19802:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5505,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "19806:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5506,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "19806:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5396,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5507,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19815:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5398,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5508,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19831:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5509,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "19806:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5510,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "19802:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5511,
                                                                                "name": "BinaryOperation",
                                                                                "src": "19780:62:16"
                                                                            }
                                                                        ],
                                                                        "id": 5512,
                                                                        "name": "FunctionCall",
                                                                        "src": "19736:107:16"
                                                                    }
                                                                ],
                                                                "id": 5513,
                                                                "name": "Assignment",
                                                                "src": "19700:143:16"
                                                            }
                                                        ],
                                                        "id": 5514,
                                                        "name": "ExpressionStatement",
                                                        "src": "19700:143:16"
                                                    }
                                                ],
                                                "id": 5515,
                                                "name": "IfStatement",
                                                "src": "19659:184:16"
                                            }
                                        ],
                                        "id": 5516,
                                        "name": "IfStatement",
                                        "src": "19459:384:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5394,
                                                            "type": "int256",
                                                            "value": "swapLong"
                                                        },
                                                        "id": 5517,
                                                        "name": "Identifier",
                                                        "src": "19857:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5518,
                                                        "name": "Literal",
                                                        "src": "19868:1:16"
                                                    }
                                                ],
                                                "id": 5519,
                                                "name": "BinaryOperation",
                                                "src": "19857:12:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5520,
                                                                                "name": "Identifier",
                                                                                "src": "19884:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5384,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5521,
                                                                                "name": "Identifier",
                                                                                "src": "19902:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5523,
                                                                        "name": "IndexAccess",
                                                                        "src": "19884:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5388,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5522,
                                                                        "name": "Identifier",
                                                                        "src": "19908:8:16"
                                                                    }
                                                                ],
                                                                "id": 5524,
                                                                "name": "IndexAccess",
                                                                "src": "19884:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "sub",
                                                                            "referencedDeclaration": 2218,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5525,
                                                                                "name": "Identifier",
                                                                                "src": "19920:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5526,
                                                                        "name": "MemberAccess",
                                                                        "src": "19920:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5527,
                                                                                        "name": "Identifier",
                                                                                        "src": "19929:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5528,
                                                                                        "name": "Identifier",
                                                                                        "src": "19947:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5529,
                                                                                "name": "IndexAccess",
                                                                                "src": "19929:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5530,
                                                                                "name": "Identifier",
                                                                                "src": "19953:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5531,
                                                                        "name": "IndexAccess",
                                                                        "src": "19929:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5394,
                                                                                    "type": "int256",
                                                                                    "value": "swapLong"
                                                                                },
                                                                                "id": 5532,
                                                                                "name": "Identifier",
                                                                                "src": "19964:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5533,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "19975:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5534,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "19975:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5535,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "19979:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5536,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "19979:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5396,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5537,
                                                                                                "name": "Identifier",
                                                                                                "src": "19988:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5398,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5538,
                                                                                                "name": "Identifier",
                                                                                                "src": "20004:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5539,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "19979:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5540,
                                                                                "name": "FunctionCall",
                                                                                "src": "19975:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5541,
                                                                        "name": "BinaryOperation",
                                                                        "src": "19964:51:16"
                                                                    }
                                                                ],
                                                                "id": 5542,
                                                                "name": "FunctionCall",
                                                                "src": "19920:96:16"
                                                            }
                                                        ],
                                                        "id": 5543,
                                                        "name": "Assignment",
                                                        "src": "19884:132:16"
                                                    }
                                                ],
                                                "id": 5544,
                                                "name": "ExpressionStatement",
                                                "src": "19884:132:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5394,
                                                                    "type": "int256",
                                                                    "value": "swapLong"
                                                                },
                                                                "id": 5545,
                                                                "name": "Identifier",
                                                                "src": "20035:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5546,
                                                                "name": "Literal",
                                                                "src": "20046:1:16"
                                                            }
                                                        ],
                                                        "id": 5547,
                                                        "name": "BinaryOperation",
                                                        "src": "20035:12:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5548,
                                                                                        "name": "Identifier",
                                                                                        "src": "20062:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5384,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5549,
                                                                                        "name": "Identifier",
                                                                                        "src": "20080:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5551,
                                                                                "name": "IndexAccess",
                                                                                "src": "20062:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5388,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5550,
                                                                                "name": "Identifier",
                                                                                "src": "20086:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5552,
                                                                        "name": "IndexAccess",
                                                                        "src": "20062:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "add",
                                                                                    "referencedDeclaration": 2150,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5553,
                                                                                        "name": "Identifier",
                                                                                        "src": "20098:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5554,
                                                                                "name": "MemberAccess",
                                                                                "src": "20098:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5555,
                                                                                                "name": "Identifier",
                                                                                                "src": "20107:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5384,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5556,
                                                                                                "name": "Identifier",
                                                                                                "src": "20125:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5557,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "20107:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5388,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5558,
                                                                                        "name": "Identifier",
                                                                                        "src": "20131:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5559,
                                                                                "name": "IndexAccess",
                                                                                "src": "20107:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5394,
                                                                                            "type": "int256",
                                                                                            "value": "swapLong"
                                                                                        },
                                                                                        "id": 5560,
                                                                                        "name": "Identifier",
                                                                                        "src": "20142:8:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5561,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "20153:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5562,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "20153:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5563,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "20157:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5564,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "20157:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5396,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5565,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "20166:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5398,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5566,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "20182:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5567,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "20157:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5568,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "20153:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5569,
                                                                                "name": "BinaryOperation",
                                                                                "src": "20142:51:16"
                                                                            }
                                                                        ],
                                                                        "id": 5570,
                                                                        "name": "FunctionCall",
                                                                        "src": "20098:96:16"
                                                                    }
                                                                ],
                                                                "id": 5571,
                                                                "name": "Assignment",
                                                                "src": "20062:132:16"
                                                            }
                                                        ],
                                                        "id": 5572,
                                                        "name": "ExpressionStatement",
                                                        "src": "20062:132:16"
                                                    }
                                                ],
                                                "id": 5573,
                                                "name": "IfStatement",
                                                "src": "20032:162:16"
                                            }
                                        ],
                                        "id": 5574,
                                        "name": "IfStatement",
                                        "src": "19854:340:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3871,
                                                            "type": "function (address,address,address,int256,int256,int256,uint256)",
                                                            "value": "PnLSettled"
                                                        },
                                                        "id": 5575,
                                                        "name": "Identifier",
                                                        "src": "20258:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5384,
                                                            "type": "address",
                                                            "value": "user"
                                                        },
                                                        "id": 5576,
                                                        "name": "Identifier",
                                                        "src": "20269:4:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5386,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 5577,
                                                        "name": "Identifier",
                                                        "src": "20275:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5388,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 5578,
                                                        "name": "Identifier",
                                                        "src": "20285:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5390,
                                                                    "type": "int256",
                                                                    "value": "financingOfferPerSec"
                                                                },
                                                                "id": 5579,
                                                                "name": "Identifier",
                                                                "src": "20295:20:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5580,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "20318:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5581,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "20318:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5582,
                                                                                        "name": "Identifier",
                                                                                        "src": "20322:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5583,
                                                                                "name": "MemberAccess",
                                                                                "src": "20322:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5396,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5584,
                                                                                "name": "Identifier",
                                                                                "src": "20331:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5398,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5585,
                                                                                "name": "Identifier",
                                                                                "src": "20347:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5586,
                                                                        "name": "FunctionCall",
                                                                        "src": "20322:35:16"
                                                                    }
                                                                ],
                                                                "id": 5587,
                                                                "name": "FunctionCall",
                                                                "src": "20318:40:16"
                                                            }
                                                        ],
                                                        "id": 5588,
                                                        "name": "BinaryOperation",
                                                        "src": "20295:63:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5392,
                                                                    "type": "int256",
                                                                    "value": "dividendOfferPerSec"
                                                                },
                                                                "id": 5589,
                                                                "name": "Identifier",
                                                                "src": "20360:19:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5590,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "20382:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5591,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "20382:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5592,
                                                                                        "name": "Identifier",
                                                                                        "src": "20386:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5593,
                                                                                "name": "MemberAccess",
                                                                                "src": "20386:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5396,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5594,
                                                                                "name": "Identifier",
                                                                                "src": "20395:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5398,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5595,
                                                                                "name": "Identifier",
                                                                                "src": "20411:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5596,
                                                                        "name": "FunctionCall",
                                                                        "src": "20386:35:16"
                                                                    }
                                                                ],
                                                                "id": 5597,
                                                                "name": "FunctionCall",
                                                                "src": "20382:40:16"
                                                            }
                                                        ],
                                                        "id": 5598,
                                                        "name": "BinaryOperation",
                                                        "src": "20360:62:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5394,
                                                                    "type": "int256",
                                                                    "value": "swapLong"
                                                                },
                                                                "id": 5599,
                                                                "name": "Identifier",
                                                                "src": "20424:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5600,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "20435:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5601,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "20435:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5602,
                                                                                        "name": "Identifier",
                                                                                        "src": "20439:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5603,
                                                                                "name": "MemberAccess",
                                                                                "src": "20439:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5396,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5604,
                                                                                "name": "Identifier",
                                                                                "src": "20448:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5398,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5605,
                                                                                "name": "Identifier",
                                                                                "src": "20464:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5606,
                                                                        "name": "FunctionCall",
                                                                        "src": "20439:35:16"
                                                                    }
                                                                ],
                                                                "id": 5607,
                                                                "name": "FunctionCall",
                                                                "src": "20435:40:16"
                                                            }
                                                        ],
                                                        "id": 5608,
                                                        "name": "BinaryOperation",
                                                        "src": "20424:51:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 5609,
                                                                "name": "Identifier",
                                                                "src": "20477:5:16"
                                                            }
                                                        ],
                                                        "id": 5610,
                                                        "name": "MemberAccess",
                                                        "src": "20477:15:16"
                                                    }
                                                ],
                                                "id": 5611,
                                                "name": "FunctionCall",
                                                "src": "20258:235:16"
                                            }
                                        ],
                                        "id": 5612,
                                        "name": "EmitStatement",
                                        "src": "20253:240:16"
                                    }
                                ],
                                "id": 5613,
                                "name": "Block",
                                "src": "19049:1452:16"
                            }
                        ],
                        "id": 5614,
                        "name": "FunctionDefinition",
                        "src": "18842:1659:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "sellerCollateralBalance",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "private"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "user",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5615,
                                                "name": "ElementaryTypeName",
                                                "src": "20542:7:16"
                                            }
                                        ],
                                        "id": 5616,
                                        "name": "VariableDeclaration",
                                        "src": "20542:12:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5617,
                                                "name": "ElementaryTypeName",
                                                "src": "20556:7:16"
                                            }
                                        ],
                                        "id": 5618,
                                        "name": "VariableDeclaration",
                                        "src": "20556:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5619,
                                                "name": "ElementaryTypeName",
                                                "src": "20574:7:16"
                                            }
                                        ],
                                        "id": 5620,
                                        "name": "VariableDeclaration",
                                        "src": "20574:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "financingBidPerSec",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5621,
                                                "name": "ElementaryTypeName",
                                                "src": "20592:6:16"
                                            }
                                        ],
                                        "id": 5622,
                                        "name": "VariableDeclaration",
                                        "src": "20592:25:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "dividendBidPerSec",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5623,
                                                "name": "ElementaryTypeName",
                                                "src": "20619:6:16"
                                            }
                                        ],
                                        "id": 5624,
                                        "name": "VariableDeclaration",
                                        "src": "20619:24:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "swapShort",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "int256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "int256",
                                                    "type": "int256"
                                                },
                                                "id": 5625,
                                                "name": "ElementaryTypeName",
                                                "src": "20645:6:16"
                                            }
                                        ],
                                        "id": 5626,
                                        "name": "VariableDeclaration",
                                        "src": "20645:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "settlementTime",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5627,
                                                "name": "ElementaryTypeName",
                                                "src": "20663:7:16"
                                            }
                                        ],
                                        "id": 5628,
                                        "name": "VariableDeclaration",
                                        "src": "20663:22:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "timestamp",
                                            "scope": 5846,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5629,
                                                "name": "ElementaryTypeName",
                                                "src": "20687:7:16"
                                            }
                                        ],
                                        "id": 5630,
                                        "name": "VariableDeclaration",
                                        "src": "20687:17:16"
                                    }
                                ],
                                "id": 5631,
                                "name": "ParameterList",
                                "src": "20541:164:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5632,
                                "name": "ParameterList",
                                "src": "20714:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5622,
                                                            "type": "int256",
                                                            "value": "financingBidPerSec"
                                                        },
                                                        "id": 5633,
                                                        "name": "Identifier",
                                                        "src": "20728:18:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5634,
                                                        "name": "Literal",
                                                        "src": "20749:1:16"
                                                    }
                                                ],
                                                "id": 5635,
                                                "name": "BinaryOperation",
                                                "src": "20728:22:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5636,
                                                                                "name": "Identifier",
                                                                                "src": "20765:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5616,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5637,
                                                                                "name": "Identifier",
                                                                                "src": "20783:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5639,
                                                                        "name": "IndexAccess",
                                                                        "src": "20765:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5620,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5638,
                                                                        "name": "Identifier",
                                                                        "src": "20789:8:16"
                                                                    }
                                                                ],
                                                                "id": 5640,
                                                                "name": "IndexAccess",
                                                                "src": "20765:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "add",
                                                                            "referencedDeclaration": 2150,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5641,
                                                                                "name": "Identifier",
                                                                                "src": "20801:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5642,
                                                                        "name": "MemberAccess",
                                                                        "src": "20801:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5643,
                                                                                        "name": "Identifier",
                                                                                        "src": "20810:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5644,
                                                                                        "name": "Identifier",
                                                                                        "src": "20828:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5645,
                                                                                "name": "IndexAccess",
                                                                                "src": "20810:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5646,
                                                                                "name": "Identifier",
                                                                                "src": "20834:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5647,
                                                                        "name": "IndexAccess",
                                                                        "src": "20810:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5622,
                                                                                    "type": "int256",
                                                                                    "value": "financingBidPerSec"
                                                                                },
                                                                                "id": 5648,
                                                                                "name": "Identifier",
                                                                                "src": "20845:18:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5649,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "20866:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5650,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "20866:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5651,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "20870:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5652,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "20870:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5628,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5653,
                                                                                                "name": "Identifier",
                                                                                                "src": "20879:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5630,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5654,
                                                                                                "name": "Identifier",
                                                                                                "src": "20895:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5655,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "20870:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5656,
                                                                                "name": "FunctionCall",
                                                                                "src": "20866:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5657,
                                                                        "name": "BinaryOperation",
                                                                        "src": "20845:61:16"
                                                                    }
                                                                ],
                                                                "id": 5658,
                                                                "name": "FunctionCall",
                                                                "src": "20801:106:16"
                                                            }
                                                        ],
                                                        "id": 5659,
                                                        "name": "Assignment",
                                                        "src": "20765:142:16"
                                                    }
                                                ],
                                                "id": 5660,
                                                "name": "ExpressionStatement",
                                                "src": "20765:142:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5622,
                                                                    "type": "int256",
                                                                    "value": "financingBidPerSec"
                                                                },
                                                                "id": 5661,
                                                                "name": "Identifier",
                                                                "src": "20926:18:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5662,
                                                                "name": "Literal",
                                                                "src": "20947:1:16"
                                                            }
                                                        ],
                                                        "id": 5663,
                                                        "name": "BinaryOperation",
                                                        "src": "20926:22:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5664,
                                                                                        "name": "Identifier",
                                                                                        "src": "20963:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5665,
                                                                                        "name": "Identifier",
                                                                                        "src": "20981:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5667,
                                                                                "name": "IndexAccess",
                                                                                "src": "20963:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5666,
                                                                                "name": "Identifier",
                                                                                "src": "20987:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5668,
                                                                        "name": "IndexAccess",
                                                                        "src": "20963:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2218,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5669,
                                                                                        "name": "Identifier",
                                                                                        "src": "20999:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5670,
                                                                                "name": "MemberAccess",
                                                                                "src": "20999:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5671,
                                                                                                "name": "Identifier",
                                                                                                "src": "21008:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5616,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5672,
                                                                                                "name": "Identifier",
                                                                                                "src": "21026:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5673,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "21008:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5620,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5674,
                                                                                        "name": "Identifier",
                                                                                        "src": "21032:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5675,
                                                                                "name": "IndexAccess",
                                                                                "src": "21008:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5622,
                                                                                            "type": "int256",
                                                                                            "value": "financingBidPerSec"
                                                                                        },
                                                                                        "id": 5676,
                                                                                        "name": "Identifier",
                                                                                        "src": "21043:18:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5677,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "21064:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5678,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "21064:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5679,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "21068:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5680,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "21068:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5628,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5681,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21077:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5630,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5682,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21093:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5683,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "21068:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5684,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "21064:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5685,
                                                                                "name": "BinaryOperation",
                                                                                "src": "21043:61:16"
                                                                            }
                                                                        ],
                                                                        "id": 5686,
                                                                        "name": "FunctionCall",
                                                                        "src": "20999:106:16"
                                                                    }
                                                                ],
                                                                "id": 5687,
                                                                "name": "Assignment",
                                                                "src": "20963:142:16"
                                                            }
                                                        ],
                                                        "id": 5688,
                                                        "name": "ExpressionStatement",
                                                        "src": "20963:142:16"
                                                    }
                                                ],
                                                "id": 5689,
                                                "name": "IfStatement",
                                                "src": "20923:182:16"
                                            }
                                        ],
                                        "id": 5690,
                                        "name": "IfStatement",
                                        "src": "20725:380:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5624,
                                                            "type": "int256",
                                                            "value": "dividendBidPerSec"
                                                        },
                                                        "id": 5691,
                                                        "name": "Identifier",
                                                        "src": "21119:17:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5692,
                                                        "name": "Literal",
                                                        "src": "21139:1:16"
                                                    }
                                                ],
                                                "id": 5693,
                                                "name": "BinaryOperation",
                                                "src": "21119:21:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5694,
                                                                                "name": "Identifier",
                                                                                "src": "21155:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5616,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5695,
                                                                                "name": "Identifier",
                                                                                "src": "21173:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5697,
                                                                        "name": "IndexAccess",
                                                                        "src": "21155:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5620,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5696,
                                                                        "name": "Identifier",
                                                                        "src": "21179:8:16"
                                                                    }
                                                                ],
                                                                "id": 5698,
                                                                "name": "IndexAccess",
                                                                "src": "21155:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "add",
                                                                            "referencedDeclaration": 2150,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5699,
                                                                                "name": "Identifier",
                                                                                "src": "21191:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5700,
                                                                        "name": "MemberAccess",
                                                                        "src": "21191:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5701,
                                                                                        "name": "Identifier",
                                                                                        "src": "21200:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5702,
                                                                                        "name": "Identifier",
                                                                                        "src": "21218:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5703,
                                                                                "name": "IndexAccess",
                                                                                "src": "21200:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5704,
                                                                                "name": "Identifier",
                                                                                "src": "21224:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5705,
                                                                        "name": "IndexAccess",
                                                                        "src": "21200:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5624,
                                                                                    "type": "int256",
                                                                                    "value": "dividendBidPerSec"
                                                                                },
                                                                                "id": 5706,
                                                                                "name": "Identifier",
                                                                                "src": "21235:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5707,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "21255:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5708,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "21255:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5709,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21259:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5710,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "21259:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5628,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5711,
                                                                                                "name": "Identifier",
                                                                                                "src": "21268:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5630,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5712,
                                                                                                "name": "Identifier",
                                                                                                "src": "21284:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5713,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "21259:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5714,
                                                                                "name": "FunctionCall",
                                                                                "src": "21255:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5715,
                                                                        "name": "BinaryOperation",
                                                                        "src": "21235:60:16"
                                                                    }
                                                                ],
                                                                "id": 5716,
                                                                "name": "FunctionCall",
                                                                "src": "21191:105:16"
                                                            }
                                                        ],
                                                        "id": 5717,
                                                        "name": "Assignment",
                                                        "src": "21155:141:16"
                                                    }
                                                ],
                                                "id": 5718,
                                                "name": "ExpressionStatement",
                                                "src": "21155:141:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5624,
                                                                    "type": "int256",
                                                                    "value": "dividendBidPerSec"
                                                                },
                                                                "id": 5719,
                                                                "name": "Identifier",
                                                                "src": "21315:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5720,
                                                                "name": "Literal",
                                                                "src": "21335:1:16"
                                                            }
                                                        ],
                                                        "id": 5721,
                                                        "name": "BinaryOperation",
                                                        "src": "21315:21:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5722,
                                                                                        "name": "Identifier",
                                                                                        "src": "21351:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5723,
                                                                                        "name": "Identifier",
                                                                                        "src": "21369:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5725,
                                                                                "name": "IndexAccess",
                                                                                "src": "21351:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5724,
                                                                                "name": "Identifier",
                                                                                "src": "21375:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5726,
                                                                        "name": "IndexAccess",
                                                                        "src": "21351:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2218,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5727,
                                                                                        "name": "Identifier",
                                                                                        "src": "21387:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5728,
                                                                                "name": "MemberAccess",
                                                                                "src": "21387:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5729,
                                                                                                "name": "Identifier",
                                                                                                "src": "21396:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5616,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5730,
                                                                                                "name": "Identifier",
                                                                                                "src": "21414:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5731,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "21396:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5620,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5732,
                                                                                        "name": "Identifier",
                                                                                        "src": "21420:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5733,
                                                                                "name": "IndexAccess",
                                                                                "src": "21396:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5624,
                                                                                            "type": "int256",
                                                                                            "value": "dividendBidPerSec"
                                                                                        },
                                                                                        "id": 5734,
                                                                                        "name": "Identifier",
                                                                                        "src": "21431:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5735,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "21451:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5736,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "21451:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5737,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "21455:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5738,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "21455:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5628,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5739,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21464:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5630,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5740,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21480:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5741,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "21455:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5742,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "21451:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5743,
                                                                                "name": "BinaryOperation",
                                                                                "src": "21431:60:16"
                                                                            }
                                                                        ],
                                                                        "id": 5744,
                                                                        "name": "FunctionCall",
                                                                        "src": "21387:105:16"
                                                                    }
                                                                ],
                                                                "id": 5745,
                                                                "name": "Assignment",
                                                                "src": "21351:141:16"
                                                            }
                                                        ],
                                                        "id": 5746,
                                                        "name": "ExpressionStatement",
                                                        "src": "21351:141:16"
                                                    }
                                                ],
                                                "id": 5747,
                                                "name": "IfStatement",
                                                "src": "21312:180:16"
                                            }
                                        ],
                                        "id": 5748,
                                        "name": "IfStatement",
                                        "src": "21116:376:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": ">",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5626,
                                                            "type": "int256",
                                                            "value": "swapShort"
                                                        },
                                                        "id": 5749,
                                                        "name": "Identifier",
                                                        "src": "21506:9:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5750,
                                                        "name": "Literal",
                                                        "src": "21518:1:16"
                                                    }
                                                ],
                                                "id": 5751,
                                                "name": "BinaryOperation",
                                                "src": "21506:13:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "=",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3755,
                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                    "value": "collateralBalance"
                                                                                },
                                                                                "id": 5752,
                                                                                "name": "Identifier",
                                                                                "src": "21534:17:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5616,
                                                                                    "type": "address",
                                                                                    "value": "user"
                                                                                },
                                                                                "id": 5753,
                                                                                "name": "Identifier",
                                                                                "src": "21552:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5755,
                                                                        "name": "IndexAccess",
                                                                        "src": "21534:23:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5620,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5754,
                                                                        "name": "Identifier",
                                                                        "src": "21558:8:16"
                                                                    }
                                                                ],
                                                                "id": 5756,
                                                                "name": "IndexAccess",
                                                                "src": "21534:33:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "add",
                                                                            "referencedDeclaration": 2150,
                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 2367,
                                                                                    "type": "type(library Math)",
                                                                                    "value": "Math"
                                                                                },
                                                                                "id": 5757,
                                                                                "name": "Identifier",
                                                                                "src": "21570:4:16"
                                                                            }
                                                                        ],
                                                                        "id": 5758,
                                                                        "name": "MemberAccess",
                                                                        "src": "21570:8:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5759,
                                                                                        "name": "Identifier",
                                                                                        "src": "21579:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5760,
                                                                                        "name": "Identifier",
                                                                                        "src": "21597:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5761,
                                                                                "name": "IndexAccess",
                                                                                "src": "21579:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5762,
                                                                                "name": "Identifier",
                                                                                "src": "21603:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5763,
                                                                        "name": "IndexAccess",
                                                                        "src": "21579:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "*",
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5626,
                                                                                    "type": "int256",
                                                                                    "value": "swapShort"
                                                                                },
                                                                                "id": 5764,
                                                                                "name": "Identifier",
                                                                                "src": "21614:9:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "isStructConstructorCall": false,
                                                                                    "lValueRequested": false,
                                                                                    "names": [
                                                                                        null
                                                                                    ],
                                                                                    "tryCall": false,
                                                                                    "type": "int256",
                                                                                    "type_conversion": true
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "argumentTypes": [
                                                                                                {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            ],
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "type": "type(int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "name": "int"
                                                                                                },
                                                                                                "id": 5765,
                                                                                                "name": "ElementaryTypeName",
                                                                                                "src": "21626:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5766,
                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                        "src": "21626:3:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "uint256",
                                                                                            "type_conversion": false
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        },
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "sub",
                                                                                                    "referencedDeclaration": 2177,
                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 2367,
                                                                                                            "type": "type(library Math)",
                                                                                                            "value": "Math"
                                                                                                        },
                                                                                                        "id": 5767,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21630:4:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5768,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "21630:8:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5628,
                                                                                                    "type": "uint256",
                                                                                                    "value": "settlementTime"
                                                                                                },
                                                                                                "id": 5769,
                                                                                                "name": "Identifier",
                                                                                                "src": "21639:14:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5630,
                                                                                                    "type": "uint256",
                                                                                                    "value": "timestamp"
                                                                                                },
                                                                                                "id": 5770,
                                                                                                "name": "Identifier",
                                                                                                "src": "21655:9:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5771,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "21630:35:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5772,
                                                                                "name": "FunctionCall",
                                                                                "src": "21626:40:16"
                                                                            }
                                                                        ],
                                                                        "id": 5773,
                                                                        "name": "BinaryOperation",
                                                                        "src": "21614:52:16"
                                                                    }
                                                                ],
                                                                "id": 5774,
                                                                "name": "FunctionCall",
                                                                "src": "21570:97:16"
                                                            }
                                                        ],
                                                        "id": 5775,
                                                        "name": "Assignment",
                                                        "src": "21534:133:16"
                                                    }
                                                ],
                                                "id": 5776,
                                                "name": "ExpressionStatement",
                                                "src": "21534:133:16"
                                            },
                                            {
                                                "attributes": {},
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "<",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5626,
                                                                    "type": "int256",
                                                                    "value": "swapShort"
                                                                },
                                                                "id": 5777,
                                                                "name": "Identifier",
                                                                "src": "21686:9:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 5778,
                                                                "name": "Literal",
                                                                "src": "21698:1:16"
                                                            }
                                                        ],
                                                        "id": 5779,
                                                        "name": "BinaryOperation",
                                                        "src": "21686:13:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "=",
                                                                    "type": "int256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": true,
                                                                            "type": "int256"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3755,
                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                            "value": "collateralBalance"
                                                                                        },
                                                                                        "id": 5780,
                                                                                        "name": "Identifier",
                                                                                        "src": "21714:17:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5616,
                                                                                            "type": "address",
                                                                                            "value": "user"
                                                                                        },
                                                                                        "id": 5781,
                                                                                        "name": "Identifier",
                                                                                        "src": "21732:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5783,
                                                                                "name": "IndexAccess",
                                                                                "src": "21714:23:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5620,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5782,
                                                                                "name": "Identifier",
                                                                                "src": "21738:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5784,
                                                                        "name": "IndexAccess",
                                                                        "src": "21714:33:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "int256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_int256",
                                                                                            "typeString": "int256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2218,
                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5785,
                                                                                        "name": "Identifier",
                                                                                        "src": "21750:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5786,
                                                                                "name": "MemberAccess",
                                                                                "src": "21750:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5787,
                                                                                                "name": "Identifier",
                                                                                                "src": "21759:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5616,
                                                                                                    "type": "address",
                                                                                                    "value": "user"
                                                                                                },
                                                                                                "id": 5788,
                                                                                                "name": "Identifier",
                                                                                                "src": "21777:4:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5789,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "21759:23:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5620,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5790,
                                                                                        "name": "Identifier",
                                                                                        "src": "21783:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5791,
                                                                                "name": "IndexAccess",
                                                                                "src": "21759:33:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "*",
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5626,
                                                                                            "type": "int256",
                                                                                            "value": "swapShort"
                                                                                        },
                                                                                        "id": 5792,
                                                                                        "name": "Identifier",
                                                                                        "src": "21794:9:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5793,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "21806:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5794,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "21806:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "uint256",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "sub",
                                                                                                            "referencedDeclaration": 2177,
                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                    "type": "type(library Math)",
                                                                                                                    "value": "Math"
                                                                                                                },
                                                                                                                "id": 5795,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "21810:4:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5796,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "21810:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5628,
                                                                                                            "type": "uint256",
                                                                                                            "value": "settlementTime"
                                                                                                        },
                                                                                                        "id": 5797,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21819:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5630,
                                                                                                            "type": "uint256",
                                                                                                            "value": "timestamp"
                                                                                                        },
                                                                                                        "id": 5798,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "21835:9:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5799,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "21810:35:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5800,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "21806:40:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5801,
                                                                                "name": "BinaryOperation",
                                                                                "src": "21794:52:16"
                                                                            }
                                                                        ],
                                                                        "id": 5802,
                                                                        "name": "FunctionCall",
                                                                        "src": "21750:97:16"
                                                                    }
                                                                ],
                                                                "id": 5803,
                                                                "name": "Assignment",
                                                                "src": "21714:133:16"
                                                            }
                                                        ],
                                                        "id": 5804,
                                                        "name": "ExpressionStatement",
                                                        "src": "21714:133:16"
                                                    }
                                                ],
                                                "id": 5805,
                                                "name": "IfStatement",
                                                "src": "21683:164:16"
                                            }
                                        ],
                                        "id": 5806,
                                        "name": "IfStatement",
                                        "src": "21503:344:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3871,
                                                            "type": "function (address,address,address,int256,int256,int256,uint256)",
                                                            "value": "PnLSettled"
                                                        },
                                                        "id": 5807,
                                                        "name": "Identifier",
                                                        "src": "21911:10:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5616,
                                                            "type": "address",
                                                            "value": "user"
                                                        },
                                                        "id": 5808,
                                                        "name": "Identifier",
                                                        "src": "21922:4:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5618,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 5809,
                                                        "name": "Identifier",
                                                        "src": "21928:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5620,
                                                            "type": "address",
                                                            "value": "currency"
                                                        },
                                                        "id": 5810,
                                                        "name": "Identifier",
                                                        "src": "21938:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5622,
                                                                    "type": "int256",
                                                                    "value": "financingBidPerSec"
                                                                },
                                                                "id": 5811,
                                                                "name": "Identifier",
                                                                "src": "21948:18:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5812,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "21969:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5813,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "21969:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5814,
                                                                                        "name": "Identifier",
                                                                                        "src": "21973:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5815,
                                                                                "name": "MemberAccess",
                                                                                "src": "21973:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5628,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5816,
                                                                                "name": "Identifier",
                                                                                "src": "21982:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5630,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5817,
                                                                                "name": "Identifier",
                                                                                "src": "21998:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5818,
                                                                        "name": "FunctionCall",
                                                                        "src": "21973:35:16"
                                                                    }
                                                                ],
                                                                "id": 5819,
                                                                "name": "FunctionCall",
                                                                "src": "21969:40:16"
                                                            }
                                                        ],
                                                        "id": 5820,
                                                        "name": "BinaryOperation",
                                                        "src": "21948:61:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5624,
                                                                    "type": "int256",
                                                                    "value": "dividendBidPerSec"
                                                                },
                                                                "id": 5821,
                                                                "name": "Identifier",
                                                                "src": "22011:17:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5822,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "22031:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5823,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "22031:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5824,
                                                                                        "name": "Identifier",
                                                                                        "src": "22035:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5825,
                                                                                "name": "MemberAccess",
                                                                                "src": "22035:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5628,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5826,
                                                                                "name": "Identifier",
                                                                                "src": "22044:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5630,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5827,
                                                                                "name": "Identifier",
                                                                                "src": "22060:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5828,
                                                                        "name": "FunctionCall",
                                                                        "src": "22035:35:16"
                                                                    }
                                                                ],
                                                                "id": 5829,
                                                                "name": "FunctionCall",
                                                                "src": "22031:40:16"
                                                            }
                                                        ],
                                                        "id": 5830,
                                                        "name": "BinaryOperation",
                                                        "src": "22011:60:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "*",
                                                            "type": "int256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5626,
                                                                    "type": "int256",
                                                                    "value": "swapShort"
                                                                },
                                                                "id": 5831,
                                                                "name": "Identifier",
                                                                "src": "22073:9:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "int256",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "type": "type(int256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "name": "int"
                                                                                },
                                                                                "id": 5832,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "22085:3:16"
                                                                            }
                                                                        ],
                                                                        "id": 5833,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "22085:3:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "uint256",
                                                                            "type_conversion": false
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sub",
                                                                                    "referencedDeclaration": 2177,
                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 2367,
                                                                                            "type": "type(library Math)",
                                                                                            "value": "Math"
                                                                                        },
                                                                                        "id": 5834,
                                                                                        "name": "Identifier",
                                                                                        "src": "22089:4:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5835,
                                                                                "name": "MemberAccess",
                                                                                "src": "22089:8:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5628,
                                                                                    "type": "uint256",
                                                                                    "value": "settlementTime"
                                                                                },
                                                                                "id": 5836,
                                                                                "name": "Identifier",
                                                                                "src": "22098:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5630,
                                                                                    "type": "uint256",
                                                                                    "value": "timestamp"
                                                                                },
                                                                                "id": 5837,
                                                                                "name": "Identifier",
                                                                                "src": "22114:9:16"
                                                                            }
                                                                        ],
                                                                        "id": 5838,
                                                                        "name": "FunctionCall",
                                                                        "src": "22089:35:16"
                                                                    }
                                                                ],
                                                                "id": 5839,
                                                                "name": "FunctionCall",
                                                                "src": "22085:40:16"
                                                            }
                                                        ],
                                                        "id": 5840,
                                                        "name": "BinaryOperation",
                                                        "src": "22073:52:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 5841,
                                                                "name": "Identifier",
                                                                "src": "22127:5:16"
                                                            }
                                                        ],
                                                        "id": 5842,
                                                        "name": "MemberAccess",
                                                        "src": "22127:15:16"
                                                    }
                                                ],
                                                "id": 5843,
                                                "name": "FunctionCall",
                                                "src": "21911:232:16"
                                            }
                                        ],
                                        "id": 5844,
                                        "name": "EmitStatement",
                                        "src": "21906:237:16"
                                    }
                                ],
                                "id": 5845,
                                "name": "Block",
                                "src": "20714:1437:16"
                            }
                        ],
                        "id": 5846,
                        "name": "FunctionDefinition",
                        "src": "20509:1642:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11491
                            ],
                            "functionSelector": "d9caed12",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "withdraw",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 5854,
                                "name": "OverrideSpecifier",
                                "src": "22229:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "security",
                                            "scope": 6244,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5847,
                                                "name": "ElementaryTypeName",
                                                "src": "22177:7:16"
                                            }
                                        ],
                                        "id": 5848,
                                        "name": "VariableDeclaration",
                                        "src": "22177:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "scope": 6244,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 5849,
                                                "name": "ElementaryTypeName",
                                                "src": "22195:7:16"
                                            }
                                        ],
                                        "id": 5850,
                                        "name": "VariableDeclaration",
                                        "src": "22195:16:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amount",
                                            "scope": 6244,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 5851,
                                                "name": "ElementaryTypeName",
                                                "src": "22213:7:16"
                                            }
                                        ],
                                        "id": 5852,
                                        "name": "VariableDeclaration",
                                        "src": "22213:14:16"
                                    }
                                ],
                                "id": 5853,
                                "name": "ParameterList",
                                "src": "22176:52:16"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 5859,
                                "name": "ParameterList",
                                "src": "22269:0:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 3908,
                                            "type": "modifier (address)",
                                            "value": "onlyTrader"
                                        },
                                        "id": 5855,
                                        "name": "Identifier",
                                        "src": "22247:10:16"
                                    },
                                    {
                                        "attributes": {
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "member_name": "sender",
                                            "type": "address payable"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": -15,
                                                    "type": "msg",
                                                    "value": "msg"
                                                },
                                                "id": 5856,
                                                "name": "Identifier",
                                                "src": "22258:3:16"
                                            }
                                        ],
                                        "id": 5857,
                                        "name": "MemberAccess",
                                        "src": "22258:10:16"
                                    }
                                ],
                                "id": 5858,
                                "name": "ModifierInvocation",
                                "src": "22247:22:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                5861
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "poolId",
                                                    "scope": 6243,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "bytes32",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "bytes32",
                                                            "type": "bytes32"
                                                        },
                                                        "id": 5860,
                                                        "name": "ElementaryTypeName",
                                                        "src": "22280:7:16"
                                                    }
                                                ],
                                                "id": 5861,
                                                "name": "VariableDeclaration",
                                                "src": "22280:14:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "bytes32"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3739,
                                                            "type": "mapping(address => bytes32)",
                                                            "value": "poolSecurity"
                                                        },
                                                        "id": 5862,
                                                        "name": "Identifier",
                                                        "src": "22297:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5848,
                                                            "type": "address",
                                                            "value": "security"
                                                        },
                                                        "id": 5863,
                                                        "name": "Identifier",
                                                        "src": "22310:8:16"
                                                    }
                                                ],
                                                "id": 5864,
                                                "name": "IndexAccess",
                                                "src": "22297:22:16"
                                            }
                                        ],
                                        "id": 5865,
                                        "name": "VariableDeclarationStatement",
                                        "src": "22280:39:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "assignments": [
                                                        5867
                                                    ]
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "constant": false,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "scope": 6242,
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "type": "uint256",
                                                            "visibility": "internal"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "name": "uint256",
                                                                    "type": "uint256"
                                                                },
                                                                "id": 5866,
                                                                "name": "ElementaryTypeName",
                                                                "src": "22334:7:16"
                                                            }
                                                        ],
                                                        "id": 5867,
                                                        "name": "VariableDeclaration",
                                                        "src": "22334:9:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 5868,
                                                        "name": "Literal",
                                                        "src": "22344:1:16"
                                                    }
                                                ],
                                                "id": 5869,
                                                "name": "VariableDeclarationStatement",
                                                "src": "22334:11:16"
                                            },
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "<",
                                                    "type": "bool"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 5867,
                                                            "type": "uint256",
                                                            "value": "i"
                                                        },
                                                        "id": 5870,
                                                        "name": "Identifier",
                                                        "src": "22347:1:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "length",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3775,
                                                                                    "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                    "value": "positions"
                                                                                },
                                                                                "id": 5871,
                                                                                "name": "Identifier",
                                                                                "src": "22349:9:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5848,
                                                                                    "type": "address",
                                                                                    "value": "security"
                                                                                },
                                                                                "id": 5872,
                                                                                "name": "Identifier",
                                                                                "src": "22359:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5873,
                                                                        "name": "IndexAccess",
                                                                        "src": "22349:19:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5850,
                                                                            "type": "address",
                                                                            "value": "currency"
                                                                        },
                                                                        "id": 5874,
                                                                        "name": "Identifier",
                                                                        "src": "22369:8:16"
                                                                    }
                                                                ],
                                                                "id": 5875,
                                                                "name": "IndexAccess",
                                                                "src": "22349:29:16"
                                                            }
                                                        ],
                                                        "id": 5876,
                                                        "name": "MemberAccess",
                                                        "src": "22349:36:16"
                                                    }
                                                ],
                                                "id": 5877,
                                                "name": "BinaryOperation",
                                                "src": "22347:38:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 5867,
                                                                    "type": "uint256",
                                                                    "value": "i"
                                                                },
                                                                "id": 5878,
                                                                "name": "Identifier",
                                                                "src": "22387:1:16"
                                                            }
                                                        ],
                                                        "id": 5879,
                                                        "name": "UnaryOperation",
                                                        "src": "22387:3:16"
                                                    }
                                                ],
                                                "id": 5880,
                                                "name": "ExpressionStatement",
                                                "src": "22387:3:16"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                5884
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "position",
                                                                    "scope": 6241,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "type": "struct IMarginManager.tradePosition",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "IMarginManager.tradePosition",
                                                                            "referencedDeclaration": 11372,
                                                                            "type": "struct IMarginManager.tradePosition"
                                                                        },
                                                                        "id": 5883,
                                                                        "name": "UserDefinedTypeName",
                                                                        "src": "22406:28:16"
                                                                    }
                                                                ],
                                                                "id": 5884,
                                                                "name": "VariableDeclaration",
                                                                "src": "22406:44:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "struct IMarginManager.tradePosition storage ref"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "type": "struct IMarginManager.tradePosition storage ref[] storage ref"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 3775,
                                                                                            "type": "mapping(address => mapping(address => struct IMarginManager.tradePosition storage ref[] storage ref))",
                                                                                            "value": "positions"
                                                                                        },
                                                                                        "id": 5885,
                                                                                        "name": "Identifier",
                                                                                        "src": "22453:9:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5848,
                                                                                            "type": "address",
                                                                                            "value": "security"
                                                                                        },
                                                                                        "id": 5886,
                                                                                        "name": "Identifier",
                                                                                        "src": "22463:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5887,
                                                                                "name": "IndexAccess",
                                                                                "src": "22453:19:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 5850,
                                                                                    "type": "address",
                                                                                    "value": "currency"
                                                                                },
                                                                                "id": 5888,
                                                                                "name": "Identifier",
                                                                                "src": "22473:8:16"
                                                                            }
                                                                        ],
                                                                        "id": 5889,
                                                                        "name": "IndexAccess",
                                                                        "src": "22453:29:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5867,
                                                                            "type": "uint256",
                                                                            "value": "i"
                                                                        },
                                                                        "id": 5890,
                                                                        "name": "Identifier",
                                                                        "src": "22483:1:16"
                                                                    }
                                                                ],
                                                                "id": 5891,
                                                                "name": "IndexAccess",
                                                                "src": "22453:32:16"
                                                            }
                                                        ],
                                                        "id": 5892,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "22406:79:16"
                                                    },
                                                    {
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "operator": "&&",
                                                                    "type": "bool"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "==",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "buyer",
                                                                                    "referencedDeclaration": 11359,
                                                                                    "type": "address"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5884,
                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                            "value": "position"
                                                                                        },
                                                                                        "id": 5893,
                                                                                        "name": "Identifier",
                                                                                        "src": "22503:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5894,
                                                                                "name": "MemberAccess",
                                                                                "src": "22503:14:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "member_name": "sender",
                                                                                    "type": "address payable"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": -15,
                                                                                            "type": "msg",
                                                                                            "value": "msg"
                                                                                        },
                                                                                        "id": 5895,
                                                                                        "name": "Identifier",
                                                                                        "src": "22519:3:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5896,
                                                                                "name": "MemberAccess",
                                                                                "src": "22519:10:16"
                                                                            }
                                                                        ],
                                                                        "id": 5897,
                                                                        "name": "BinaryOperation",
                                                                        "src": "22503:26:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": ">",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "isConstant": false,
                                                                                    "isLValue": true,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "type": "int256"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "mapping(address => int256)"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 3755,
                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                    "value": "collateralBalance"
                                                                                                },
                                                                                                "id": 5898,
                                                                                                "name": "Identifier",
                                                                                                "src": "22533:17:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "member_name": "buyer",
                                                                                                    "referencedDeclaration": 11359,
                                                                                                    "type": "address"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5884,
                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                            "value": "position"
                                                                                                        },
                                                                                                        "id": 5899,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "22551:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5900,
                                                                                                "name": "MemberAccess",
                                                                                                "src": "22551:14:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5901,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "22533:33:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "overloadedDeclarations": [
                                                                                                null
                                                                                            ],
                                                                                            "referencedDeclaration": 5850,
                                                                                            "type": "address",
                                                                                            "value": "currency"
                                                                                        },
                                                                                        "id": 5902,
                                                                                        "name": "Identifier",
                                                                                        "src": "22567:8:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5903,
                                                                                "name": "IndexAccess",
                                                                                "src": "22533:43:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "hexvalue": "30",
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "token": "number",
                                                                                    "type": "int_const 0",
                                                                                    "value": "0"
                                                                                },
                                                                                "id": 5904,
                                                                                "name": "Literal",
                                                                                "src": "22577:1:16"
                                                                            }
                                                                        ],
                                                                        "id": 5905,
                                                                        "name": "BinaryOperation",
                                                                        "src": "22533:45:16"
                                                                    }
                                                                ],
                                                                "id": 5906,
                                                                "name": "BinaryOperation",
                                                                "src": "22503:75:16"
                                                            },
                                                            {
                                                                "children": [
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": ">=",
                                                                                    "type": "bool"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "isStructConstructorCall": false,
                                                                                            "lValueRequested": false,
                                                                                            "names": [
                                                                                                null
                                                                                            ],
                                                                                            "tryCall": false,
                                                                                            "type": "int256",
                                                                                            "type_conversion": true
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "argumentTypes": [
                                                                                                        {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    ],
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "type(int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "name": "int"
                                                                                                        },
                                                                                                        "id": 5907,
                                                                                                        "name": "ElementaryTypeName",
                                                                                                        "src": "22601:3:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5908,
                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                "src": "22601:3:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5852,
                                                                                                    "type": "uint256",
                                                                                                    "value": "amount"
                                                                                                },
                                                                                                "id": 5909,
                                                                                                "name": "Identifier",
                                                                                                "src": "22605:6:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5910,
                                                                                        "name": "FunctionCall",
                                                                                        "src": "22601:11:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "int256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                            "value": "collateralBalance"
                                                                                                        },
                                                                                                        "id": 5911,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "22616:17:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "buyer",
                                                                                                            "referencedDeclaration": 11359,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 5912,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "22634:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5913,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "22634:14:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5914,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "22616:33:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5850,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 5915,
                                                                                                "name": "Identifier",
                                                                                                "src": "22650:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5916,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "22616:43:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5917,
                                                                                "name": "BinaryOperation",
                                                                                "src": "22601:58:16"
                                                                            },
                                                                            {
                                                                                "children": [
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "bool",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "transfer",
                                                                                                            "referencedDeclaration": 2887,
                                                                                                            "type": "function (address,uint256) external returns (bool)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "contract IERC20",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                                    "typeString": "address"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2938,
                                                                                                                            "type": "type(contract IERC20)",
                                                                                                                            "value": "IERC20"
                                                                                                                        },
                                                                                                                        "id": 5918,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22683:6:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 5919,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22690:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5920,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "22683:16:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5921,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "22683:25:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "buyer",
                                                                                                            "referencedDeclaration": 11359,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 5922,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "22709:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5923,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "22709:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "uint256",
                                                                                                            "type_conversion": true
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                            "typeString": "int256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "type(uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "name": "uint"
                                                                                                                        },
                                                                                                                        "id": 5924,
                                                                                                                        "name": "ElementaryTypeName",
                                                                                                                        "src": "22725:4:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5925,
                                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                                "src": "22725:4:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "int256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                    "value": "collateralBalance"
                                                                                                                                },
                                                                                                                                "id": 5926,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "22730:17:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "member_name": "buyer",
                                                                                                                                    "referencedDeclaration": 11359,
                                                                                                                                    "type": "address"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                            "value": "position"
                                                                                                                                        },
                                                                                                                                        "id": 5927,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "22748:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 5928,
                                                                                                                                "name": "MemberAccess",
                                                                                                                                "src": "22748:14:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5929,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "22730:33:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 5930,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22764:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5931,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "22730:43:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5932,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "22725:49:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5933,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "22683:92:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5934,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "22683:92:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "uint256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": true,
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "mapping(address => uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 3761,
                                                                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                            "value": "collateralAmount"
                                                                                                                        },
                                                                                                                        "id": 5935,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22798:16:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5861,
                                                                                                                            "type": "bytes32",
                                                                                                                            "value": "poolId"
                                                                                                                        },
                                                                                                                        "id": 5936,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22815:6:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5938,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "22798:24:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 5937,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "22823:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5939,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "22798:34:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "uint256",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "sub",
                                                                                                                    "referencedDeclaration": 2177,
                                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2367,
                                                                                                                            "type": "type(library Math)",
                                                                                                                            "value": "Math"
                                                                                                                        },
                                                                                                                        "id": 5940,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22835:4:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5941,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "22835:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3761,
                                                                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                    "value": "collateralAmount"
                                                                                                                                },
                                                                                                                                "id": 5942,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "22844:16:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5861,
                                                                                                                                    "type": "bytes32",
                                                                                                                                    "value": "poolId"
                                                                                                                                },
                                                                                                                                "id": 5943,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "22861:6:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5944,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "22844:24:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 5945,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "22869:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5946,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "22844:34:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                                    "typeString": "int256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": true,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "type(uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "name": "uint"
                                                                                                                                },
                                                                                                                                "id": 5947,
                                                                                                                                "name": "ElementaryTypeName",
                                                                                                                                "src": "22880:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5948,
                                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                                        "src": "22880:4:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "int256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                                            "value": "collateralBalance"
                                                                                                                                        },
                                                                                                                                        "id": 5949,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "22885:17:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "member_name": "buyer",
                                                                                                                                            "referencedDeclaration": 11359,
                                                                                                                                            "type": "address"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                    "value": "position"
                                                                                                                                                },
                                                                                                                                                "id": 5950,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "22903:8:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 5951,
                                                                                                                                        "name": "MemberAccess",
                                                                                                                                        "src": "22903:14:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 5952,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "22885:33:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 5953,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "22919:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5954,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "22885:43:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5955,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "22880:49:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5956,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "22835:95:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5957,
                                                                                                "name": "Assignment",
                                                                                                "src": "22798:132:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5958,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "22798:132:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "tuple()",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                                                    "typeString": "literal_string \"withdrawl\""
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                    "typeString": "int256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3855,
                                                                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                                                                            "value": "collateral"
                                                                                                        },
                                                                                                        "id": 5959,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "22958:10:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "hexvalue": "77697468647261776c",
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "token": "string",
                                                                                                            "type": "literal_string \"withdrawl\"",
                                                                                                            "value": "withdrawl"
                                                                                                        },
                                                                                                        "id": 5960,
                                                                                                        "name": "Literal",
                                                                                                        "src": "22969:11:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "buyer",
                                                                                                            "referencedDeclaration": 11359,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 5961,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "22982:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5962,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "22982:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5850,
                                                                                                            "type": "address",
                                                                                                            "value": "currency"
                                                                                                        },
                                                                                                        "id": 5963,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "22998:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "int256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                            "value": "collateralBalance"
                                                                                                                        },
                                                                                                                        "id": 5964,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23008:17:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "buyer",
                                                                                                                            "referencedDeclaration": 11359,
                                                                                                                            "type": "address"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                    "value": "position"
                                                                                                                                },
                                                                                                                                "id": 5965,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23026:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5966,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "23026:14:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5967,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23008:33:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 5968,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23042:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5969,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "23008:43:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "timestamp",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": -4,
                                                                                                                    "type": "block",
                                                                                                                    "value": "block"
                                                                                                                },
                                                                                                                "id": 5970,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23053:5:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5971,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23053:15:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5972,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "22958:111:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5973,
                                                                                        "name": "EmitStatement",
                                                                                        "src": "22953:116:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "uint256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5852,
                                                                                                            "type": "uint256",
                                                                                                            "value": "amount"
                                                                                                        },
                                                                                                        "id": 5974,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23092:6:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "uint256",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "sub",
                                                                                                                    "referencedDeclaration": 2177,
                                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2367,
                                                                                                                            "type": "type(library Math)",
                                                                                                                            "value": "Math"
                                                                                                                        },
                                                                                                                        "id": 5975,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23101:4:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5976,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "23101:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 5977,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23110:6:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                                    "typeString": "int256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": true,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "type(uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "name": "uint"
                                                                                                                                },
                                                                                                                                "id": 5978,
                                                                                                                                "name": "ElementaryTypeName",
                                                                                                                                "src": "23118:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5979,
                                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                                        "src": "23118:4:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "int256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                                            "value": "collateralBalance"
                                                                                                                                        },
                                                                                                                                        "id": 5980,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "23123:17:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "member_name": "buyer",
                                                                                                                                            "referencedDeclaration": 11359,
                                                                                                                                            "type": "address"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                    "value": "position"
                                                                                                                                                },
                                                                                                                                                "id": 5981,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "23141:8:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 5982,
                                                                                                                                        "name": "MemberAccess",
                                                                                                                                        "src": "23141:14:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 5983,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "23123:33:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 5984,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23157:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5985,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "23123:43:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5986,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "23118:49:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5987,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "23101:67:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5988,
                                                                                                "name": "Assignment",
                                                                                                "src": "23092:76:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5989,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23092:76:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "int256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": true,
                                                                                                            "type": "int256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                            "value": "collateralBalance"
                                                                                                                        },
                                                                                                                        "id": 5990,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23191:17:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "buyer",
                                                                                                                            "referencedDeclaration": 11359,
                                                                                                                            "type": "address"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                    "value": "position"
                                                                                                                                },
                                                                                                                                "id": 5991,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23209:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 5992,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "23209:14:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 5994,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23191:33:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 5993,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23225:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 5995,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "23191:43:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "hexvalue": "30",
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "token": "number",
                                                                                                            "type": "int_const 0",
                                                                                                            "value": "0"
                                                                                                        },
                                                                                                        "id": 5996,
                                                                                                        "name": "Literal",
                                                                                                        "src": "23237:1:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5997,
                                                                                                "name": "Assignment",
                                                                                                "src": "23191:47:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 5998,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23191:47:16"
                                                                                    }
                                                                                ],
                                                                                "id": 5999,
                                                                                "name": "Block",
                                                                                "src": "22660:618:16"
                                                                            },
                                                                            {
                                                                                "children": [
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "bool",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "transfer",
                                                                                                            "referencedDeclaration": 2887,
                                                                                                            "type": "function (address,uint256) external returns (bool)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "contract IERC20",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                                    "typeString": "address"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2938,
                                                                                                                            "type": "type(contract IERC20)",
                                                                                                                            "value": "IERC20"
                                                                                                                        },
                                                                                                                        "id": 6000,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23323:6:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6001,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23330:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6002,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "23323:16:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6003,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23323:25:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "buyer",
                                                                                                            "referencedDeclaration": 11359,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 6004,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23349:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6005,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23349:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5852,
                                                                                                            "type": "uint256",
                                                                                                            "value": "amount"
                                                                                                        },
                                                                                                        "id": 6006,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23365:6:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6007,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "23323:49:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6008,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23323:49:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "uint256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": true,
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "mapping(address => uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 3761,
                                                                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                            "value": "collateralAmount"
                                                                                                                        },
                                                                                                                        "id": 6009,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23395:16:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5861,
                                                                                                                            "type": "bytes32",
                                                                                                                            "value": "poolId"
                                                                                                                        },
                                                                                                                        "id": 6010,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23412:6:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6012,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23395:24:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 6011,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23420:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6013,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "23395:34:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "uint256",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "sub",
                                                                                                                    "referencedDeclaration": 2177,
                                                                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2367,
                                                                                                                            "type": "type(library Math)",
                                                                                                                            "value": "Math"
                                                                                                                        },
                                                                                                                        "id": 6014,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23432:4:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6015,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "23432:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3761,
                                                                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                    "value": "collateralAmount"
                                                                                                                                },
                                                                                                                                "id": 6016,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23441:16:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5861,
                                                                                                                                    "type": "bytes32",
                                                                                                                                    "value": "poolId"
                                                                                                                                },
                                                                                                                                "id": 6017,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23458:6:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6018,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "23441:24:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6019,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23466:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6020,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23441:34:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 6021,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23477:6:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6022,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "23432:52:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6023,
                                                                                                "name": "Assignment",
                                                                                                "src": "23395:89:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6024,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23395:89:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "tuple()",
                                                                                                    "type_conversion": false
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                                                    "typeString": "literal_string \"withdrawl\""
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_address",
                                                                                                                    "typeString": "address"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                    "typeString": "int256"
                                                                                                                },
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3855,
                                                                                                            "type": "function (bytes32,address,address,int256,uint256)",
                                                                                                            "value": "collateral"
                                                                                                        },
                                                                                                        "id": 6025,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23515:10:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "hexvalue": "77697468647261776c",
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "token": "string",
                                                                                                            "type": "literal_string \"withdrawl\"",
                                                                                                            "value": "withdrawl"
                                                                                                        },
                                                                                                        "id": 6026,
                                                                                                        "name": "Literal",
                                                                                                        "src": "23526:11:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "buyer",
                                                                                                            "referencedDeclaration": 11359,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 6027,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23539:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6028,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23539:14:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5850,
                                                                                                            "type": "address",
                                                                                                            "value": "currency"
                                                                                                        },
                                                                                                        "id": 6029,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23555:8:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "int256",
                                                                                                            "type_conversion": true
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "type(int256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "name": "int"
                                                                                                                        },
                                                                                                                        "id": 6030,
                                                                                                                        "name": "ElementaryTypeName",
                                                                                                                        "src": "23565:3:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6031,
                                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                                "src": "23565:3:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 6032,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23569:6:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6033,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "23565:11:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "timestamp",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": -4,
                                                                                                                    "type": "block",
                                                                                                                    "value": "block"
                                                                                                                },
                                                                                                                "id": 6034,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23578:5:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6035,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23578:15:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6036,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "23515:79:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6037,
                                                                                        "name": "EmitStatement",
                                                                                        "src": "23510:84:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "int256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": true,
                                                                                                            "type": "int256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                            "value": "collateralBalance"
                                                                                                                        },
                                                                                                                        "id": 6038,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23634:17:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "buyer",
                                                                                                                            "referencedDeclaration": 11359,
                                                                                                                            "type": "address"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                    "value": "position"
                                                                                                                                },
                                                                                                                                "id": 6039,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23652:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6040,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "23652:14:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6042,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23634:33:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 6041,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23668:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6043,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "23634:43:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "int256",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                            "typeString": "int256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                            "typeString": "int256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "sub",
                                                                                                                    "referencedDeclaration": 2218,
                                                                                                                    "type": "function (int256,int256) pure returns (int256)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 2367,
                                                                                                                            "type": "type(library Math)",
                                                                                                                            "value": "Math"
                                                                                                                        },
                                                                                                                        "id": 6044,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23680:4:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6045,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "23680:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "int256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                    "value": "collateralBalance"
                                                                                                                                },
                                                                                                                                "id": 6046,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "23689:17:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "member_name": "buyer",
                                                                                                                                    "referencedDeclaration": 11359,
                                                                                                                                    "type": "address"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                            "value": "position"
                                                                                                                                        },
                                                                                                                                        "id": 6047,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "23707:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6048,
                                                                                                                                "name": "MemberAccess",
                                                                                                                                "src": "23707:14:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6049,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "23689:33:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6050,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23723:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6051,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "23689:43:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "int256",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": true,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "type(int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "name": "int"
                                                                                                                                },
                                                                                                                                "id": 6052,
                                                                                                                                "name": "ElementaryTypeName",
                                                                                                                                "src": "23734:3:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6053,
                                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                                        "src": "23734:3:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5852,
                                                                                                                            "type": "uint256",
                                                                                                                            "value": "amount"
                                                                                                                        },
                                                                                                                        "id": 6054,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "23738:6:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6055,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "23734:11:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6056,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "23680:66:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6057,
                                                                                                "name": "Assignment",
                                                                                                "src": "23634:112:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6058,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23634:112:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "operator": "=",
                                                                                                    "type": "uint256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5852,
                                                                                                            "type": "uint256",
                                                                                                            "value": "amount"
                                                                                                        },
                                                                                                        "id": 6059,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23770:6:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "hexvalue": "30",
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "token": "number",
                                                                                                            "type": "int_const 0",
                                                                                                            "value": "0"
                                                                                                        },
                                                                                                        "id": 6060,
                                                                                                        "name": "Literal",
                                                                                                        "src": "23779:1:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6061,
                                                                                                "name": "Assignment",
                                                                                                "src": "23770:10:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6062,
                                                                                        "name": "ExpressionStatement",
                                                                                        "src": "23770:10:16"
                                                                                    }
                                                                                ],
                                                                                "id": 6063,
                                                                                "name": "Block",
                                                                                "src": "23300:500:16"
                                                                            }
                                                                        ],
                                                                        "id": 6064,
                                                                        "name": "IfStatement",
                                                                        "src": "22598:1202:16"
                                                                    }
                                                                ],
                                                                "id": 6065,
                                                                "name": "Block",
                                                                "src": "22579:1342:16"
                                                            },
                                                            {
                                                                "attributes": {},
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            },
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "operator": "&&",
                                                                            "type": "bool"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": "==",
                                                                                    "type": "bool"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "seller",
                                                                                            "referencedDeclaration": 11361,
                                                                                            "type": "address"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5884,
                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                    "value": "position"
                                                                                                },
                                                                                                "id": 6066,
                                                                                                "name": "Identifier",
                                                                                                "src": "23943:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6067,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "23943:15:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "member_name": "sender",
                                                                                            "type": "address payable"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": -15,
                                                                                                    "type": "msg",
                                                                                                    "value": "msg"
                                                                                                },
                                                                                                "id": 6068,
                                                                                                "name": "Identifier",
                                                                                                "src": "23960:3:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6069,
                                                                                        "name": "MemberAccess",
                                                                                        "src": "23960:10:16"
                                                                                    }
                                                                                ],
                                                                                "id": 6070,
                                                                                "name": "BinaryOperation",
                                                                                "src": "23943:27:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_int256",
                                                                                        "typeString": "int256"
                                                                                    },
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "operator": ">",
                                                                                    "type": "bool"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "isConstant": false,
                                                                                            "isLValue": true,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "type": "int256"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "mapping(address => int256)"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 3755,
                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                            "value": "collateralBalance"
                                                                                                        },
                                                                                                        "id": 6071,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "23974:17:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "member_name": "seller",
                                                                                                            "referencedDeclaration": 11361,
                                                                                                            "type": "address"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                    "value": "position"
                                                                                                                },
                                                                                                                "id": 6072,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "23992:8:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6073,
                                                                                                        "name": "MemberAccess",
                                                                                                        "src": "23992:15:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6074,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "23974:34:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "overloadedDeclarations": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "referencedDeclaration": 5850,
                                                                                                    "type": "address",
                                                                                                    "value": "currency"
                                                                                                },
                                                                                                "id": 6075,
                                                                                                "name": "Identifier",
                                                                                                "src": "24009:8:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6076,
                                                                                        "name": "IndexAccess",
                                                                                        "src": "23974:44:16"
                                                                                    },
                                                                                    {
                                                                                        "attributes": {
                                                                                            "hexvalue": "30",
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "token": "number",
                                                                                            "type": "int_const 0",
                                                                                            "value": "0"
                                                                                        },
                                                                                        "id": 6077,
                                                                                        "name": "Literal",
                                                                                        "src": "24019:1:16"
                                                                                    }
                                                                                ],
                                                                                "id": 6078,
                                                                                "name": "BinaryOperation",
                                                                                "src": "23974:46:16"
                                                                            }
                                                                        ],
                                                                        "id": 6079,
                                                                        "name": "BinaryOperation",
                                                                        "src": "23943:77:16"
                                                                    },
                                                                    {
                                                                        "children": [
                                                                            {
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_int256",
                                                                                                "typeString": "int256"
                                                                                            },
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "operator": ">=",
                                                                                            "type": "bool"
                                                                                        },
                                                                                        "children": [
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "isStructConstructorCall": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "names": [
                                                                                                        null
                                                                                                    ],
                                                                                                    "tryCall": false,
                                                                                                    "type": "int256",
                                                                                                    "type_conversion": true
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "argumentTypes": [
                                                                                                                {
                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                    "typeString": "uint256"
                                                                                                                }
                                                                                                            ],
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "type(int256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "name": "int"
                                                                                                                },
                                                                                                                "id": 6080,
                                                                                                                "name": "ElementaryTypeName",
                                                                                                                "src": "24043:3:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6081,
                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                        "src": "24043:3:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5852,
                                                                                                            "type": "uint256",
                                                                                                            "value": "amount"
                                                                                                        },
                                                                                                        "id": 6082,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "24047:6:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6083,
                                                                                                "name": "FunctionCall",
                                                                                                "src": "24043:11:16"
                                                                                            },
                                                                                            {
                                                                                                "attributes": {
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": true,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "type": "int256"
                                                                                                },
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": true,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "type": "mapping(address => int256)"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                    "value": "collateralBalance"
                                                                                                                },
                                                                                                                "id": 6084,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24058:17:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "seller",
                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                    "type": "address"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                            "value": "position"
                                                                                                                        },
                                                                                                                        "id": 6085,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24076:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6086,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24076:15:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6087,
                                                                                                        "name": "IndexAccess",
                                                                                                        "src": "24058:34:16"
                                                                                                    },
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "overloadedDeclarations": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "referencedDeclaration": 5850,
                                                                                                            "type": "address",
                                                                                                            "value": "currency"
                                                                                                        },
                                                                                                        "id": 6088,
                                                                                                        "name": "Identifier",
                                                                                                        "src": "24093:8:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6089,
                                                                                                "name": "IndexAccess",
                                                                                                "src": "24058:44:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6090,
                                                                                        "name": "BinaryOperation",
                                                                                        "src": "24043:59:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "bool",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "transfer",
                                                                                                                    "referencedDeclaration": 2887,
                                                                                                                    "type": "function (address,uint256) external returns (bool)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "isStructConstructorCall": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "names": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "tryCall": false,
                                                                                                                            "type": "contract IERC20",
                                                                                                                            "type_conversion": true
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "argumentTypes": [
                                                                                                                                        {
                                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                                            "typeString": "address"
                                                                                                                                        }
                                                                                                                                    ],
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2938,
                                                                                                                                    "type": "type(contract IERC20)",
                                                                                                                                    "value": "IERC20"
                                                                                                                                },
                                                                                                                                "id": 6091,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24126:6:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6092,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24133:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6093,
                                                                                                                        "name": "FunctionCall",
                                                                                                                        "src": "24126:16:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6094,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24126:25:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "seller",
                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                    "type": "address"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                            "value": "position"
                                                                                                                        },
                                                                                                                        "id": 6095,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24152:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6096,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24152:15:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                                    "typeString": "int256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": true,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "type(uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "name": "uint"
                                                                                                                                },
                                                                                                                                "id": 6097,
                                                                                                                                "name": "ElementaryTypeName",
                                                                                                                                "src": "24169:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6098,
                                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                                        "src": "24169:4:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "int256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                                            "value": "collateralBalance"
                                                                                                                                        },
                                                                                                                                        "id": 6099,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24174:17:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "member_name": "seller",
                                                                                                                                            "referencedDeclaration": 11361,
                                                                                                                                            "type": "address"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                    "value": "position"
                                                                                                                                                },
                                                                                                                                                "id": 6100,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "24192:8:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 6101,
                                                                                                                                        "name": "MemberAccess",
                                                                                                                                        "src": "24192:15:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6102,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "24174:34:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6103,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24209:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6104,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24174:44:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6105,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "24169:50:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6106,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "24126:94:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6107,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24126:94:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": true,
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3761,
                                                                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                    "value": "collateralAmount"
                                                                                                                                },
                                                                                                                                "id": 6108,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24243:16:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5861,
                                                                                                                                    "type": "bytes32",
                                                                                                                                    "value": "poolId"
                                                                                                                                },
                                                                                                                                "id": 6109,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24260:6:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6111,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24243:24:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6110,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24268:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6112,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "24243:34:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": false
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                },
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "sub",
                                                                                                                            "referencedDeclaration": 2177,
                                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                                    "type": "type(library Math)",
                                                                                                                                    "value": "Math"
                                                                                                                                },
                                                                                                                                "id": 6113,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24280:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6114,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "24280:8:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "uint256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => uint256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3761,
                                                                                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                            "value": "collateralAmount"
                                                                                                                                        },
                                                                                                                                        "id": 6115,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24289:16:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5861,
                                                                                                                                            "type": "bytes32",
                                                                                                                                            "value": "poolId"
                                                                                                                                        },
                                                                                                                                        "id": 6116,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24306:6:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6117,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "24289:24:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6118,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24314:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6119,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24289:34:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "isStructConstructorCall": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "names": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "tryCall": false,
                                                                                                                            "type": "uint256",
                                                                                                                            "type_conversion": true
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "argumentTypes": [
                                                                                                                                        {
                                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                                            "typeString": "int256"
                                                                                                                                        }
                                                                                                                                    ],
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": false,
                                                                                                                                    "isPure": true,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "type(uint256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "name": "uint"
                                                                                                                                        },
                                                                                                                                        "id": 6120,
                                                                                                                                        "name": "ElementaryTypeName",
                                                                                                                                        "src": "24325:4:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6121,
                                                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                                                "src": "24325:4:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "int256"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                                    "value": "collateralBalance"
                                                                                                                                                },
                                                                                                                                                "id": 6122,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "24330:17:16"
                                                                                                                                            },
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "isConstant": false,
                                                                                                                                                    "isLValue": true,
                                                                                                                                                    "isPure": false,
                                                                                                                                                    "lValueRequested": false,
                                                                                                                                                    "member_name": "seller",
                                                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                                                    "type": "address"
                                                                                                                                                },
                                                                                                                                                "children": [
                                                                                                                                                    {
                                                                                                                                                        "attributes": {
                                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                                null
                                                                                                                                                            ],
                                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                            "value": "position"
                                                                                                                                                        },
                                                                                                                                                        "id": 6123,
                                                                                                                                                        "name": "Identifier",
                                                                                                                                                        "src": "24348:8:16"
                                                                                                                                                    }
                                                                                                                                                ],
                                                                                                                                                "id": 6124,
                                                                                                                                                "name": "MemberAccess",
                                                                                                                                                "src": "24348:15:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 6125,
                                                                                                                                        "name": "IndexAccess",
                                                                                                                                        "src": "24330:34:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                                            "type": "address",
                                                                                                                                            "value": "currency"
                                                                                                                                        },
                                                                                                                                        "id": 6126,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24365:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6127,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "24330:44:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6128,
                                                                                                                        "name": "FunctionCall",
                                                                                                                        "src": "24325:50:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6129,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "24280:96:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6130,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "24243:133:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6131,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24243:133:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "tuple()",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                            "typeString": "int256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 3855,
                                                                                                                    "type": "function (bytes32,address,address,int256,uint256)",
                                                                                                                    "value": "collateral"
                                                                                                                },
                                                                                                                "id": 6132,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24404:10:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "hexvalue": "77697468647261776c",
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "token": "string",
                                                                                                                    "type": "literal_string \"withdrawl\"",
                                                                                                                    "value": "withdrawl"
                                                                                                                },
                                                                                                                "id": 6133,
                                                                                                                "name": "Literal",
                                                                                                                "src": "24415:11:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "seller",
                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                    "type": "address"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                            "value": "position"
                                                                                                                        },
                                                                                                                        "id": 6134,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24428:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6135,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24428:15:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 6136,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24445:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "type": "int256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                    "value": "collateralBalance"
                                                                                                                                },
                                                                                                                                "id": 6137,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24455:17:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "member_name": "seller",
                                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                                    "type": "address"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                            "value": "position"
                                                                                                                                        },
                                                                                                                                        "id": 6138,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24473:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6139,
                                                                                                                                "name": "MemberAccess",
                                                                                                                                "src": "24473:15:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6140,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24455:34:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6141,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24490:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6142,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "24455:44:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "timestamp",
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": -4,
                                                                                                                            "type": "block",
                                                                                                                            "value": "block"
                                                                                                                        },
                                                                                                                        "id": 6143,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24501:5:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6144,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24501:15:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6145,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "24404:113:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6146,
                                                                                                "name": "EmitStatement",
                                                                                                "src": "24399:118:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 6147,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24540:6:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": false
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                },
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "sub",
                                                                                                                            "referencedDeclaration": 2177,
                                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                                    "type": "type(library Math)",
                                                                                                                                    "value": "Math"
                                                                                                                                },
                                                                                                                                "id": 6148,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24549:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6149,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "24549:8:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5852,
                                                                                                                            "type": "uint256",
                                                                                                                            "value": "amount"
                                                                                                                        },
                                                                                                                        "id": 6150,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24558:6:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "isStructConstructorCall": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "names": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "tryCall": false,
                                                                                                                            "type": "uint256",
                                                                                                                            "type_conversion": true
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "argumentTypes": [
                                                                                                                                        {
                                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                                            "typeString": "int256"
                                                                                                                                        }
                                                                                                                                    ],
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": false,
                                                                                                                                    "isPure": true,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "type(uint256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "name": "uint"
                                                                                                                                        },
                                                                                                                                        "id": 6151,
                                                                                                                                        "name": "ElementaryTypeName",
                                                                                                                                        "src": "24566:4:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6152,
                                                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                                                "src": "24566:4:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "int256"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                                    "value": "collateralBalance"
                                                                                                                                                },
                                                                                                                                                "id": 6153,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "24571:17:16"
                                                                                                                                            },
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "isConstant": false,
                                                                                                                                                    "isLValue": true,
                                                                                                                                                    "isPure": false,
                                                                                                                                                    "lValueRequested": false,
                                                                                                                                                    "member_name": "seller",
                                                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                                                    "type": "address"
                                                                                                                                                },
                                                                                                                                                "children": [
                                                                                                                                                    {
                                                                                                                                                        "attributes": {
                                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                                null
                                                                                                                                                            ],
                                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                            "value": "position"
                                                                                                                                                        },
                                                                                                                                                        "id": 6154,
                                                                                                                                                        "name": "Identifier",
                                                                                                                                                        "src": "24589:8:16"
                                                                                                                                                    }
                                                                                                                                                ],
                                                                                                                                                "id": 6155,
                                                                                                                                                "name": "MemberAccess",
                                                                                                                                                "src": "24589:15:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 6156,
                                                                                                                                        "name": "IndexAccess",
                                                                                                                                        "src": "24571:34:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                                            "type": "address",
                                                                                                                                            "value": "currency"
                                                                                                                                        },
                                                                                                                                        "id": 6157,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24606:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6158,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "24571:44:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6159,
                                                                                                                        "name": "FunctionCall",
                                                                                                                        "src": "24566:50:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6160,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "24549:68:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6161,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "24540:77:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6162,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24540:77:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "int256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": true,
                                                                                                                    "type": "int256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                    "value": "collateralBalance"
                                                                                                                                },
                                                                                                                                "id": 6163,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24640:17:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "member_name": "seller",
                                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                                    "type": "address"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                            "value": "position"
                                                                                                                                        },
                                                                                                                                        "id": 6164,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24658:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6165,
                                                                                                                                "name": "MemberAccess",
                                                                                                                                "src": "24658:15:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6167,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24640:34:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6166,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24675:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6168,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "24640:44:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "hexvalue": "30",
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "token": "number",
                                                                                                                    "type": "int_const 0",
                                                                                                                    "value": "0"
                                                                                                                },
                                                                                                                "id": 6169,
                                                                                                                "name": "Literal",
                                                                                                                "src": "24687:1:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6170,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "24640:48:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6171,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24640:48:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6172,
                                                                                        "name": "Block",
                                                                                        "src": "24103:625:16"
                                                                                    },
                                                                                    {
                                                                                        "children": [
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "bool",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "transfer",
                                                                                                                    "referencedDeclaration": 2887,
                                                                                                                    "type": "function (address,uint256) external returns (bool)"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "isStructConstructorCall": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "names": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "tryCall": false,
                                                                                                                            "type": "contract IERC20",
                                                                                                                            "type_conversion": true
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "argumentTypes": [
                                                                                                                                        {
                                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                                            "typeString": "address"
                                                                                                                                        }
                                                                                                                                    ],
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2938,
                                                                                                                                    "type": "type(contract IERC20)",
                                                                                                                                    "value": "IERC20"
                                                                                                                                },
                                                                                                                                "id": 6173,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24773:6:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6174,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24780:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6175,
                                                                                                                        "name": "FunctionCall",
                                                                                                                        "src": "24773:16:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6176,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24773:25:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "seller",
                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                    "type": "address"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                            "value": "position"
                                                                                                                        },
                                                                                                                        "id": 6177,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24799:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6178,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24799:15:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 6179,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24816:6:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6180,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "24773:50:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6181,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24773:50:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": true,
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3761,
                                                                                                                                    "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                    "value": "collateralAmount"
                                                                                                                                },
                                                                                                                                "id": 6182,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24846:16:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5861,
                                                                                                                                    "type": "bytes32",
                                                                                                                                    "value": "poolId"
                                                                                                                                },
                                                                                                                                "id": 6183,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24863:6:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6185,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24846:24:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6184,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24871:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6186,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "24846:34:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "uint256",
                                                                                                                    "type_conversion": false
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                },
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "sub",
                                                                                                                            "referencedDeclaration": 2177,
                                                                                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                                    "type": "type(library Math)",
                                                                                                                                    "value": "Math"
                                                                                                                                },
                                                                                                                                "id": 6187,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24883:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6188,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "24883:8:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "uint256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => uint256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3761,
                                                                                                                                            "type": "mapping(bytes32 => mapping(address => uint256))",
                                                                                                                                            "value": "collateralAmount"
                                                                                                                                        },
                                                                                                                                        "id": 6189,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24892:16:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5861,
                                                                                                                                            "type": "bytes32",
                                                                                                                                            "value": "poolId"
                                                                                                                                        },
                                                                                                                                        "id": 6190,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "24909:6:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6191,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "24892:24:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6192,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "24917:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6193,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "24892:34:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5852,
                                                                                                                            "type": "uint256",
                                                                                                                            "value": "amount"
                                                                                                                        },
                                                                                                                        "id": 6194,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24928:6:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6195,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "24883:52:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6196,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "24846:89:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6197,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "24846:89:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "isStructConstructorCall": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "names": [
                                                                                                                null
                                                                                                            ],
                                                                                                            "tryCall": false,
                                                                                                            "type": "tuple()",
                                                                                                            "type_conversion": false
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "argumentTypes": [
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_stringliteral_014ab85ea8e748688cc6784b5e57ac1916c5079c4b0ea7171a3ee030794a44d0",
                                                                                                                            "typeString": "literal_string \"withdrawl\""
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_address",
                                                                                                                            "typeString": "address"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_int256",
                                                                                                                            "typeString": "int256"
                                                                                                                        },
                                                                                                                        {
                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                            "typeString": "uint256"
                                                                                                                        }
                                                                                                                    ],
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 3855,
                                                                                                                    "type": "function (bytes32,address,address,int256,uint256)",
                                                                                                                    "value": "collateral"
                                                                                                                },
                                                                                                                "id": 6198,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "24966:10:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "hexvalue": "77697468647261776c",
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "token": "string",
                                                                                                                    "type": "literal_string \"withdrawl\"",
                                                                                                                    "value": "withdrawl"
                                                                                                                },
                                                                                                                "id": 6199,
                                                                                                                "name": "Literal",
                                                                                                                "src": "24977:11:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "seller",
                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                    "type": "address"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                            "value": "position"
                                                                                                                        },
                                                                                                                        "id": 6200,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "24990:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6201,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "24990:15:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                    "type": "address",
                                                                                                                    "value": "currency"
                                                                                                                },
                                                                                                                "id": 6202,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "25007:8:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "int256",
                                                                                                                    "type_conversion": true
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                                                    "typeString": "uint256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": true,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "type(int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "name": "int"
                                                                                                                                },
                                                                                                                                "id": 6203,
                                                                                                                                "name": "ElementaryTypeName",
                                                                                                                                "src": "25017:3:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6204,
                                                                                                                        "name": "ElementaryTypeNameExpression",
                                                                                                                        "src": "25017:3:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5852,
                                                                                                                            "type": "uint256",
                                                                                                                            "value": "amount"
                                                                                                                        },
                                                                                                                        "id": 6205,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "25021:6:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6206,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "25017:11:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "member_name": "timestamp",
                                                                                                                    "type": "uint256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": -4,
                                                                                                                            "type": "block",
                                                                                                                            "value": "block"
                                                                                                                        },
                                                                                                                        "id": 6207,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "25030:5:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6208,
                                                                                                                "name": "MemberAccess",
                                                                                                                "src": "25030:15:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6209,
                                                                                                        "name": "FunctionCall",
                                                                                                        "src": "24966:80:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6210,
                                                                                                "name": "EmitStatement",
                                                                                                "src": "24961:85:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "int256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": true,
                                                                                                                    "isPure": false,
                                                                                                                    "lValueRequested": true,
                                                                                                                    "type": "int256"
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "mapping(address => int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 3755,
                                                                                                                                    "type": "mapping(address => mapping(address => int256))",
                                                                                                                                    "value": "collateralBalance"
                                                                                                                                },
                                                                                                                                "id": 6211,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "25086:17:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "member_name": "seller",
                                                                                                                                    "referencedDeclaration": 11361,
                                                                                                                                    "type": "address"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 5884,
                                                                                                                                            "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                            "value": "position"
                                                                                                                                        },
                                                                                                                                        "id": 6212,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "25104:8:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6213,
                                                                                                                                "name": "MemberAccess",
                                                                                                                                "src": "25104:15:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6215,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "25086:34:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "overloadedDeclarations": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "referencedDeclaration": 5850,
                                                                                                                            "type": "address",
                                                                                                                            "value": "currency"
                                                                                                                        },
                                                                                                                        "id": 6214,
                                                                                                                        "name": "Identifier",
                                                                                                                        "src": "25121:8:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6216,
                                                                                                                "name": "IndexAccess",
                                                                                                                "src": "25086:44:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": false,
                                                                                                                    "isStructConstructorCall": false,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "names": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "tryCall": false,
                                                                                                                    "type": "int256",
                                                                                                                    "type_conversion": false
                                                                                                                },
                                                                                                                "children": [
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "argumentTypes": [
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                                    "typeString": "int256"
                                                                                                                                },
                                                                                                                                {
                                                                                                                                    "typeIdentifier": "t_int256",
                                                                                                                                    "typeString": "int256"
                                                                                                                                }
                                                                                                                            ],
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "member_name": "sub",
                                                                                                                            "referencedDeclaration": 2218,
                                                                                                                            "type": "function (int256,int256) pure returns (int256)"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 2367,
                                                                                                                                    "type": "type(library Math)",
                                                                                                                                    "value": "Math"
                                                                                                                                },
                                                                                                                                "id": 6217,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "25133:4:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6218,
                                                                                                                        "name": "MemberAccess",
                                                                                                                        "src": "25133:8:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": true,
                                                                                                                            "isPure": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "type": "int256"
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": true,
                                                                                                                                    "isPure": false,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "mapping(address => int256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "overloadedDeclarations": [
                                                                                                                                                null
                                                                                                                                            ],
                                                                                                                                            "referencedDeclaration": 3755,
                                                                                                                                            "type": "mapping(address => mapping(address => int256))",
                                                                                                                                            "value": "collateralBalance"
                                                                                                                                        },
                                                                                                                                        "id": 6219,
                                                                                                                                        "name": "Identifier",
                                                                                                                                        "src": "25142:17:16"
                                                                                                                                    },
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "isConstant": false,
                                                                                                                                            "isLValue": true,
                                                                                                                                            "isPure": false,
                                                                                                                                            "lValueRequested": false,
                                                                                                                                            "member_name": "seller",
                                                                                                                                            "referencedDeclaration": 11361,
                                                                                                                                            "type": "address"
                                                                                                                                        },
                                                                                                                                        "children": [
                                                                                                                                            {
                                                                                                                                                "attributes": {
                                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                                        null
                                                                                                                                                    ],
                                                                                                                                                    "referencedDeclaration": 5884,
                                                                                                                                                    "type": "struct IMarginManager.tradePosition memory",
                                                                                                                                                    "value": "position"
                                                                                                                                                },
                                                                                                                                                "id": 6220,
                                                                                                                                                "name": "Identifier",
                                                                                                                                                "src": "25160:8:16"
                                                                                                                                            }
                                                                                                                                        ],
                                                                                                                                        "id": 6221,
                                                                                                                                        "name": "MemberAccess",
                                                                                                                                        "src": "25160:15:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6222,
                                                                                                                                "name": "IndexAccess",
                                                                                                                                "src": "25142:34:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5850,
                                                                                                                                    "type": "address",
                                                                                                                                    "value": "currency"
                                                                                                                                },
                                                                                                                                "id": 6223,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "25177:8:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6224,
                                                                                                                        "name": "IndexAccess",
                                                                                                                        "src": "25142:44:16"
                                                                                                                    },
                                                                                                                    {
                                                                                                                        "attributes": {
                                                                                                                            "isConstant": false,
                                                                                                                            "isLValue": false,
                                                                                                                            "isPure": false,
                                                                                                                            "isStructConstructorCall": false,
                                                                                                                            "lValueRequested": false,
                                                                                                                            "names": [
                                                                                                                                null
                                                                                                                            ],
                                                                                                                            "tryCall": false,
                                                                                                                            "type": "int256",
                                                                                                                            "type_conversion": true
                                                                                                                        },
                                                                                                                        "children": [
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "argumentTypes": [
                                                                                                                                        {
                                                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                                                            "typeString": "uint256"
                                                                                                                                        }
                                                                                                                                    ],
                                                                                                                                    "isConstant": false,
                                                                                                                                    "isLValue": false,
                                                                                                                                    "isPure": true,
                                                                                                                                    "lValueRequested": false,
                                                                                                                                    "type": "type(int256)"
                                                                                                                                },
                                                                                                                                "children": [
                                                                                                                                    {
                                                                                                                                        "attributes": {
                                                                                                                                            "name": "int"
                                                                                                                                        },
                                                                                                                                        "id": 6225,
                                                                                                                                        "name": "ElementaryTypeName",
                                                                                                                                        "src": "25188:3:16"
                                                                                                                                    }
                                                                                                                                ],
                                                                                                                                "id": 6226,
                                                                                                                                "name": "ElementaryTypeNameExpression",
                                                                                                                                "src": "25188:3:16"
                                                                                                                            },
                                                                                                                            {
                                                                                                                                "attributes": {
                                                                                                                                    "overloadedDeclarations": [
                                                                                                                                        null
                                                                                                                                    ],
                                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                                    "type": "uint256",
                                                                                                                                    "value": "amount"
                                                                                                                                },
                                                                                                                                "id": 6227,
                                                                                                                                "name": "Identifier",
                                                                                                                                "src": "25192:6:16"
                                                                                                                            }
                                                                                                                        ],
                                                                                                                        "id": 6228,
                                                                                                                        "name": "FunctionCall",
                                                                                                                        "src": "25188:11:16"
                                                                                                                    }
                                                                                                                ],
                                                                                                                "id": 6229,
                                                                                                                "name": "FunctionCall",
                                                                                                                "src": "25133:67:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6230,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "25086:114:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6231,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "25086:114:16"
                                                                                            },
                                                                                            {
                                                                                                "children": [
                                                                                                    {
                                                                                                        "attributes": {
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": false,
                                                                                                            "lValueRequested": false,
                                                                                                            "operator": "=",
                                                                                                            "type": "uint256"
                                                                                                        },
                                                                                                        "children": [
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "overloadedDeclarations": [
                                                                                                                        null
                                                                                                                    ],
                                                                                                                    "referencedDeclaration": 5852,
                                                                                                                    "type": "uint256",
                                                                                                                    "value": "amount"
                                                                                                                },
                                                                                                                "id": 6232,
                                                                                                                "name": "Identifier",
                                                                                                                "src": "25224:6:16"
                                                                                                            },
                                                                                                            {
                                                                                                                "attributes": {
                                                                                                                    "hexvalue": "30",
                                                                                                                    "isConstant": false,
                                                                                                                    "isLValue": false,
                                                                                                                    "isPure": true,
                                                                                                                    "lValueRequested": false,
                                                                                                                    "token": "number",
                                                                                                                    "type": "int_const 0",
                                                                                                                    "value": "0"
                                                                                                                },
                                                                                                                "id": 6233,
                                                                                                                "name": "Literal",
                                                                                                                "src": "25233:1:16"
                                                                                                            }
                                                                                                        ],
                                                                                                        "id": 6234,
                                                                                                        "name": "Assignment",
                                                                                                        "src": "25224:10:16"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 6235,
                                                                                                "name": "ExpressionStatement",
                                                                                                "src": "25224:10:16"
                                                                                            }
                                                                                        ],
                                                                                        "id": 6236,
                                                                                        "name": "Block",
                                                                                        "src": "24750:504:16"
                                                                                    }
                                                                                ],
                                                                                "id": 6237,
                                                                                "name": "IfStatement",
                                                                                "src": "24040:1214:16"
                                                                            }
                                                                        ],
                                                                        "id": 6238,
                                                                        "name": "Block",
                                                                        "src": "24021:1338:16"
                                                                    }
                                                                ],
                                                                "id": 6239,
                                                                "name": "IfStatement",
                                                                "src": "23940:1419:16"
                                                            }
                                                        ],
                                                        "id": 6240,
                                                        "name": "IfStatement",
                                                        "src": "22500:2859:16"
                                                    }
                                                ],
                                                "id": 6241,
                                                "name": "Block",
                                                "src": "22391:2979:16"
                                            }
                                        ],
                                        "id": 6242,
                                        "name": "ForStatement",
                                        "src": "22330:3040:16"
                                    }
                                ],
                                "id": 6243,
                                "name": "Block",
                                "src": "22269:3108:16"
                            }
                        ],
                        "id": 6244,
                        "name": "FunctionDefinition",
                        "src": "22159:3218:16"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                11443
                            ],
                            "functionSelector": "2d916746",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getTradingFeeCollected",
                            "scope": 6363,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 6248,
                                "name": "OverrideSpecifier",
                                "src": "25433:8:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "_token",
                                            "scope": 6299,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 6245,
                                                "name": "ElementaryTypeName",
                                                "src": "25417:7:16"
                                            }
                                        ],
                                        "id": 6246,
                                        "name": "VariableDeclaration",
                                        "src": "25417:14:16"
                                    }
                                ],
                                "id": 6247,
                                "name": "ParameterList",
                                "src": "25416:16:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 6299,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6249,
                                                "name": "ElementaryTypeName",
                                                "src": "25459:7:16"
                                            }
                                        ],
                                        "id": 6250,
                                        "name": "VariableDeclaration",
                                        "src": "25459:7:16"
                                    }
                                ],
                                "id": 6251,
                                "name": "ParameterList",
                                "src": "25458:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_b96be16b05b75bc8355a55580cdf55506a64fe0095ac0411c167b4ced0d6ed7d",
                                                                    "typeString": "literal_string \"Unauthorized collection request\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 6252,
                                                        "name": "Identifier",
                                                        "src": "25478:7:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "==",
                                                            "type": "bool"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sender",
                                                                    "type": "address payable"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": -15,
                                                                            "type": "msg",
                                                                            "value": "msg"
                                                                        },
                                                                        "id": 6253,
                                                                        "name": "Identifier",
                                                                        "src": "25486:3:16"
                                                                    }
                                                                ],
                                                                "id": 6254,
                                                                "name": "MemberAccess",
                                                                "src": "25486:10:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3716,
                                                                    "type": "address",
                                                                    "value": "_distribution"
                                                                },
                                                                "id": 6255,
                                                                "name": "Identifier",
                                                                "src": "25498:13:16"
                                                            }
                                                        ],
                                                        "id": 6256,
                                                        "name": "BinaryOperation",
                                                        "src": "25486:25:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "556e617574686f72697a656420636f6c6c656374696f6e2072657175657374",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"Unauthorized collection request\"",
                                                            "value": "Unauthorized collection request"
                                                        },
                                                        "id": 6257,
                                                        "name": "Literal",
                                                        "src": "25513:33:16"
                                                    }
                                                ],
                                                "id": 6258,
                                                "name": "FunctionCall",
                                                "src": "25478:69:16"
                                            }
                                        ],
                                        "id": 6259,
                                        "name": "ExpressionStatement",
                                        "src": "25478:69:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6261
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "feeCollected",
                                                    "scope": 6298,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 6260,
                                                        "name": "ElementaryTypeName",
                                                        "src": "25558:7:16"
                                                    }
                                                ],
                                                "id": 6261,
                                                "name": "VariableDeclaration",
                                                "src": "25558:20:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3747,
                                                            "type": "mapping(address => uint256)",
                                                            "value": "fees"
                                                        },
                                                        "id": 6262,
                                                        "name": "Identifier",
                                                        "src": "25581:4:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6246,
                                                            "type": "address",
                                                            "value": "_token"
                                                        },
                                                        "id": 6263,
                                                        "name": "Identifier",
                                                        "src": "25586:6:16"
                                                    }
                                                ],
                                                "id": 6264,
                                                "name": "IndexAccess",
                                                "src": "25581:12:16"
                                            }
                                        ],
                                        "id": 6265,
                                        "name": "VariableDeclarationStatement",
                                        "src": "25558:35:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": true,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3747,
                                                                    "type": "mapping(address => uint256)",
                                                                    "value": "fees"
                                                                },
                                                                "id": 6266,
                                                                "name": "Identifier",
                                                                "src": "25604:4:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6246,
                                                                    "type": "address",
                                                                    "value": "_token"
                                                                },
                                                                "id": 6267,
                                                                "name": "Identifier",
                                                                "src": "25609:6:16"
                                                            }
                                                        ],
                                                        "id": 6268,
                                                        "name": "IndexAccess",
                                                        "src": "25604:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "uint256",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "member_name": "sub",
                                                                    "referencedDeclaration": 2177,
                                                                    "type": "function (uint256,uint256) pure returns (uint256)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2367,
                                                                            "type": "type(library Math)",
                                                                            "value": "Math"
                                                                        },
                                                                        "id": 6269,
                                                                        "name": "Identifier",
                                                                        "src": "25619:4:16"
                                                                    }
                                                                ],
                                                                "id": 6270,
                                                                "name": "MemberAccess",
                                                                "src": "25619:8:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "type": "uint256"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3747,
                                                                            "type": "mapping(address => uint256)",
                                                                            "value": "fees"
                                                                        },
                                                                        "id": 6271,
                                                                        "name": "Identifier",
                                                                        "src": "25628:4:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 6246,
                                                                            "type": "address",
                                                                            "value": "_token"
                                                                        },
                                                                        "id": 6272,
                                                                        "name": "Identifier",
                                                                        "src": "25633:6:16"
                                                                    }
                                                                ],
                                                                "id": 6273,
                                                                "name": "IndexAccess",
                                                                "src": "25628:12:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6261,
                                                                    "type": "uint256",
                                                                    "value": "feeCollected"
                                                                },
                                                                "id": 6274,
                                                                "name": "Identifier",
                                                                "src": "25642:12:16"
                                                            }
                                                        ],
                                                        "id": 6275,
                                                        "name": "FunctionCall",
                                                        "src": "25619:36:16"
                                                    }
                                                ],
                                                "id": 6276,
                                                "name": "Assignment",
                                                "src": "25604:51:16"
                                            }
                                        ],
                                        "id": 6277,
                                        "name": "ExpressionStatement",
                                        "src": "25604:51:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "transfer",
                                                            "referencedDeclaration": 2887,
                                                            "type": "function (address,uint256) external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract IERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2938,
                                                                            "type": "type(contract IERC20)",
                                                                            "value": "IERC20"
                                                                        },
                                                                        "id": 6278,
                                                                        "name": "Identifier",
                                                                        "src": "25666:6:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 6246,
                                                                            "type": "address",
                                                                            "value": "_token"
                                                                        },
                                                                        "id": 6279,
                                                                        "name": "Identifier",
                                                                        "src": "25673:6:16"
                                                                    }
                                                                ],
                                                                "id": 6280,
                                                                "name": "FunctionCall",
                                                                "src": "25666:14:16"
                                                            }
                                                        ],
                                                        "id": 6281,
                                                        "name": "MemberAccess",
                                                        "src": "25666:23:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3716,
                                                            "type": "address",
                                                            "value": "_distribution"
                                                        },
                                                        "id": 6282,
                                                        "name": "Identifier",
                                                        "src": "25690:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6261,
                                                            "type": "uint256",
                                                            "value": "feeCollected"
                                                        },
                                                        "id": 6283,
                                                        "name": "Identifier",
                                                        "src": "25705:12:16"
                                                    }
                                                ],
                                                "id": 6284,
                                                "name": "FunctionCall",
                                                "src": "25666:52:16"
                                            }
                                        ],
                                        "id": 6285,
                                        "name": "ExpressionStatement",
                                        "src": "25666:52:16"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "tuple()",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3843,
                                                            "type": "function (address,uint256,uint256)",
                                                            "value": "feecollection"
                                                        },
                                                        "id": 6286,
                                                        "name": "Identifier",
                                                        "src": "25734:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "isStructConstructorCall": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                null
                                                            ],
                                                            "tryCall": false,
                                                            "type": "address",
                                                            "type_conversion": true
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_MarginIssueManager_$6363",
                                                                            "typeString": "contract MarginIssueManager"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 6287,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "25748:7:16"
                                                                    }
                                                                ],
                                                                "id": 6288,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "25748:7:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract MarginIssueManager",
                                                                    "value": "this"
                                                                },
                                                                "id": 6289,
                                                                "name": "Identifier",
                                                                "src": "25756:4:16"
                                                            }
                                                        ],
                                                        "id": 6290,
                                                        "name": "FunctionCall",
                                                        "src": "25748:13:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6261,
                                                            "type": "uint256",
                                                            "value": "feeCollected"
                                                        },
                                                        "id": 6291,
                                                        "name": "Identifier",
                                                        "src": "25763:12:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "timestamp",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -4,
                                                                    "type": "block",
                                                                    "value": "block"
                                                                },
                                                                "id": 6292,
                                                                "name": "Identifier",
                                                                "src": "25777:5:16"
                                                            }
                                                        ],
                                                        "id": 6293,
                                                        "name": "MemberAccess",
                                                        "src": "25777:15:16"
                                                    }
                                                ],
                                                "id": 6294,
                                                "name": "FunctionCall",
                                                "src": "25734:59:16"
                                            }
                                        ],
                                        "id": 6295,
                                        "name": "EmitStatement",
                                        "src": "25729:64:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 6251
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "overloadedDeclarations": [
                                                        null
                                                    ],
                                                    "referencedDeclaration": 6261,
                                                    "type": "uint256",
                                                    "value": "feeCollected"
                                                },
                                                "id": 6296,
                                                "name": "Identifier",
                                                "src": "25811:12:16"
                                            }
                                        ],
                                        "id": 6297,
                                        "name": "Return",
                                        "src": "25804:19:16"
                                    }
                                ],
                                "id": 6298,
                                "name": "Block",
                                "src": "25467:364:16"
                            }
                        ],
                        "id": 6299,
                        "name": "FunctionDefinition",
                        "src": "25385:446:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_convertERC20sToAssets",
                            "scope": 6363,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev This helper function is a fast and cheap way to convert between IERC20[] and IAsset[] types"
                                },
                                "id": 6300,
                                "name": "StructuredDocumentation",
                                "src": "25841:117:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokens",
                                            "scope": 6311,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "contract IERC20[]",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "type": "contract IERC20[]"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IERC20",
                                                            "referencedDeclaration": 2938,
                                                            "type": "contract IERC20"
                                                        },
                                                        "id": 6301,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "25996:6:16"
                                                    }
                                                ],
                                                "id": 6302,
                                                "name": "ArrayTypeName",
                                                "src": "25996:8:16"
                                            }
                                        ],
                                        "id": 6303,
                                        "name": "VariableDeclaration",
                                        "src": "25996:22:16"
                                    }
                                ],
                                "id": 6304,
                                "name": "ParameterList",
                                "src": "25995:24:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "assets",
                                            "scope": 6311,
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "type": "contract IAsset[]",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "type": "contract IAsset[]"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IAsset",
                                                            "referencedDeclaration": 3127,
                                                            "type": "contract IAsset"
                                                        },
                                                        "id": 6305,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "26043:6:16"
                                                    }
                                                ],
                                                "id": 6306,
                                                "name": "ArrayTypeName",
                                                "src": "26043:8:16"
                                            }
                                        ],
                                        "id": 6307,
                                        "name": "VariableDeclaration",
                                        "src": "26043:22:16"
                                    }
                                ],
                                "id": 6308,
                                "name": "ParameterList",
                                "src": "26042:24:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "evmVersion": "istanbul",
                                            "externalReferences": [
                                                {
                                                    "declaration": 6307,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "26159:6:16",
                                                    "valueSize": 1
                                                },
                                                {
                                                    "declaration": 6303,
                                                    "isOffset": false,
                                                    "isSlot": false,
                                                    "src": "26169:6:16",
                                                    "valueSize": 1
                                                }
                                            ],
                                            "operations": "{ assets := tokens }"
                                        },
                                        "children": [],
                                        "id": 6309,
                                        "name": "InlineAssembly",
                                        "src": "26135:51:16"
                                    }
                                ],
                                "id": 6310,
                                "name": "Block",
                                "src": "26067:126:16"
                            }
                        ],
                        "id": 6311,
                        "name": "FunctionDefinition",
                        "src": "25964:229:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_computeScalingFactor",
                            "scope": 6363,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "text": " @dev Returns a scaling factor that, when multiplied to a token amount for `token`, normalizes its balance as if\n it had 18 decimals."
                                },
                                "id": 6312,
                                "name": "StructuredDocumentation",
                                "src": "26201:160:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "token",
                                            "scope": 6346,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "contract IERC20",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "IERC20",
                                                    "referencedDeclaration": 2938,
                                                    "type": "contract IERC20"
                                                },
                                                "id": 6313,
                                                "name": "UserDefinedTypeName",
                                                "src": "26398:6:16"
                                            }
                                        ],
                                        "id": 6314,
                                        "name": "VariableDeclaration",
                                        "src": "26398:12:16"
                                    }
                                ],
                                "id": 6315,
                                "name": "ParameterList",
                                "src": "26397:14:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 6346,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6316,
                                                "name": "ElementaryTypeName",
                                                "src": "26435:7:16"
                                            }
                                        ],
                                        "id": 6317,
                                        "name": "VariableDeclaration",
                                        "src": "26435:7:16"
                                    }
                                ],
                                "id": 6318,
                                "name": "ParameterList",
                                "src": "26434:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6320
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "tokenDecimals",
                                                    "scope": 6345,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 6319,
                                                        "name": "ElementaryTypeName",
                                                        "src": "26536:7:16"
                                                    }
                                                ],
                                                "id": 6320,
                                                "name": "VariableDeclaration",
                                                "src": "26536:21:16"
                                            },
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint8",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "decimals",
                                                            "referencedDeclaration": 2459,
                                                            "type": "function () view external returns (uint8)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract ERC20",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 2860,
                                                                            "type": "type(contract ERC20)",
                                                                            "value": "ERC20"
                                                                        },
                                                                        "id": 6321,
                                                                        "name": "Identifier",
                                                                        "src": "26560:5:16"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "isStructConstructorCall": false,
                                                                            "lValueRequested": false,
                                                                            "names": [
                                                                                null
                                                                            ],
                                                                            "tryCall": false,
                                                                            "type": "address",
                                                                            "type_conversion": true
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$2938",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    ],
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "type": "type(address)"
                                                                                },
                                                                                "children": [
                                                                                    {
                                                                                        "attributes": {
                                                                                            "name": "address"
                                                                                        },
                                                                                        "id": 6322,
                                                                                        "name": "ElementaryTypeName",
                                                                                        "src": "26566:7:16"
                                                                                    }
                                                                                ],
                                                                                "id": 6323,
                                                                                "name": "ElementaryTypeNameExpression",
                                                                                "src": "26566:7:16"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 6314,
                                                                                    "type": "contract IERC20",
                                                                                    "value": "token"
                                                                                },
                                                                                "id": 6324,
                                                                                "name": "Identifier",
                                                                                "src": "26574:5:16"
                                                                            }
                                                                        ],
                                                                        "id": 6325,
                                                                        "name": "FunctionCall",
                                                                        "src": "26566:14:16"
                                                                    }
                                                                ],
                                                                "id": 6326,
                                                                "name": "FunctionCall",
                                                                "src": "26560:21:16"
                                                            }
                                                        ],
                                                        "id": 6327,
                                                        "name": "MemberAccess",
                                                        "src": "26560:30:16"
                                                    }
                                                ],
                                                "id": 6328,
                                                "name": "FunctionCall",
                                                "src": "26560:32:16"
                                            }
                                        ],
                                        "id": 6329,
                                        "name": "VariableDeclarationStatement",
                                        "src": "26536:56:16"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                6331
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "decimalsDifference",
                                                    "scope": 6345,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "uint256",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "uint256",
                                                            "type": "uint256"
                                                        },
                                                        "id": 6330,
                                                        "name": "ElementaryTypeName",
                                                        "src": "26670:7:16"
                                                    }
                                                ],
                                                "id": 6331,
                                                "name": "VariableDeclaration",
                                                "src": "26670:26:16"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_18_by_1",
                                                                    "typeString": "int_const 18"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "sub",
                                                            "referencedDeclaration": 2177,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 2367,
                                                                    "type": "type(library Math)",
                                                                    "value": "Math"
                                                                },
                                                                "id": 6332,
                                                                "name": "Identifier",
                                                                "src": "26699:4:16"
                                                            }
                                                        ],
                                                        "id": 6333,
                                                        "name": "MemberAccess",
                                                        "src": "26699:8:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "3138",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 18",
                                                            "value": "18"
                                                        },
                                                        "id": 6334,
                                                        "name": "Literal",
                                                        "src": "26708:2:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6320,
                                                            "type": "uint256",
                                                            "value": "tokenDecimals"
                                                        },
                                                        "id": 6335,
                                                        "name": "Identifier",
                                                        "src": "26712:13:16"
                                                    }
                                                ],
                                                "id": 6336,
                                                "name": "FunctionCall",
                                                "src": "26699:27:16"
                                            }
                                        ],
                                        "id": 6337,
                                        "name": "VariableDeclarationStatement",
                                        "src": "26670:56:16"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 6318
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "*",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "ONE",
                                                            "referencedDeclaration": 445,
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 780,
                                                                    "type": "type(library FixedPoint)",
                                                                    "value": "FixedPoint"
                                                                },
                                                                "id": 6338,
                                                                "name": "Identifier",
                                                                "src": "26744:10:16"
                                                            }
                                                        ],
                                                        "id": 6339,
                                                        "name": "MemberAccess",
                                                        "src": "26744:14:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "operator": "**",
                                                            "type": "uint256"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "3130",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 10",
                                                                    "value": "10"
                                                                },
                                                                "id": 6340,
                                                                "name": "Literal",
                                                                "src": "26761:2:16"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 6331,
                                                                    "type": "uint256",
                                                                    "value": "decimalsDifference"
                                                                },
                                                                "id": 6341,
                                                                "name": "Identifier",
                                                                "src": "26765:18:16"
                                                            }
                                                        ],
                                                        "id": 6342,
                                                        "name": "BinaryOperation",
                                                        "src": "26761:22:16"
                                                    }
                                                ],
                                                "id": 6343,
                                                "name": "BinaryOperation",
                                                "src": "26744:39:16"
                                            }
                                        ],
                                        "id": 6344,
                                        "name": "Return",
                                        "src": "26737:46:16"
                                    }
                                ],
                                "id": 6345,
                                "name": "Block",
                                "src": "26444:347:16"
                            }
                        ],
                        "id": 6346,
                        "name": "FunctionDefinition",
                        "src": "26367:424:16"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "_upscale",
                            "scope": 6363,
                            "stateMutability": "pure",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "amount",
                                            "scope": 6362,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6347,
                                                "name": "ElementaryTypeName",
                                                "src": "26817:7:16"
                                            }
                                        ],
                                        "id": 6348,
                                        "name": "VariableDeclaration",
                                        "src": "26817:14:16"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "scalingFactor",
                                            "scope": 6362,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6349,
                                                "name": "ElementaryTypeName",
                                                "src": "26833:7:16"
                                            }
                                        ],
                                        "id": 6350,
                                        "name": "VariableDeclaration",
                                        "src": "26833:21:16"
                                    }
                                ],
                                "id": 6351,
                                "name": "ParameterList",
                                "src": "26816:39:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 6362,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 6352,
                                                "name": "ElementaryTypeName",
                                                "src": "26879:7:16"
                                            }
                                        ],
                                        "id": 6353,
                                        "name": "VariableDeclaration",
                                        "src": "26879:7:16"
                                    }
                                ],
                                "id": 6354,
                                "name": "ParameterList",
                                "src": "26878:9:16"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 6354
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "uint256",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "mulDown",
                                                            "referencedDeclaration": 537,
                                                            "type": "function (uint256,uint256) pure returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 780,
                                                                    "type": "type(library FixedPoint)",
                                                                    "value": "FixedPoint"
                                                                },
                                                                "id": 6355,
                                                                "name": "Identifier",
                                                                "src": "26914:10:16"
                                                            }
                                                        ],
                                                        "id": 6356,
                                                        "name": "MemberAccess",
                                                        "src": "26914:18:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6348,
                                                            "type": "uint256",
                                                            "value": "amount"
                                                        },
                                                        "id": 6357,
                                                        "name": "Identifier",
                                                        "src": "26933:6:16"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 6350,
                                                            "type": "uint256",
                                                            "value": "scalingFactor"
                                                        },
                                                        "id": 6358,
                                                        "name": "Identifier",
                                                        "src": "26941:13:16"
                                                    }
                                                ],
                                                "id": 6359,
                                                "name": "FunctionCall",
                                                "src": "26914:41:16"
                                            }
                                        ],
                                        "id": 6360,
                                        "name": "Return",
                                        "src": "26907:48:16"
                                    }
                                ],
                                "id": 6361,
                                "name": "Block",
                                "src": "26888:75:16"
                            }
                        ],
                        "id": 6362,
                        "name": "FunctionDefinition",
                        "src": "26799:164:16"
                    }
                ],
                "id": 6363,
                "name": "ContractDefinition",
                "src": "951:26017:16"
            }
        ],
        "id": 6364,
        "name": "SourceUnit",
        "src": "114:26854:16"
    },
    "compiler": {
        "name": "solc",
        "version": "0.7.1+commit.f4a555be.Emscripten.clang"
    },
    "networks": {
        "11155111": {
            "events": {
                "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "previousOwner",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "newOwner",
                            "type": "address"
                        }
                    ],
                    "name": "OwnershipTransferred",
                    "type": "event"
                },
                "0xf76f10f0e1a4d96de83e72f10dc6773179bdcf79f2ba735893488e0913d99959": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "user",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "security",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "currency",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "int256",
                            "name": "financing",
                            "type": "int256"
                        },
                        {
                            "indexed": false,
                            "internalType": "int256",
                            "name": "dividend",
                            "type": "int256"
                        },
                        {
                            "indexed": false,
                            "internalType": "int256",
                            "name": "commission",
                            "type": "int256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "settlementTime",
                            "type": "uint256"
                        }
                    ],
                    "name": "PnLSettled",
                    "type": "event"
                },
                "0x56eadf552f1d54f8f73fbbf801097c1c4d7bb3d77d5ac2bebfd0a8151642d55a": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "bytes32",
                            "name": "poolId",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "security",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "name": "closures",
                    "type": "event"
                },
                "0x9729135f54e0b4d82a83f156404c915e7232ec9706f1de0aea769af82cc1f8ea": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "action",
                            "type": "bytes32"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "user",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "currency",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "int256",
                            "name": "balance",
                            "type": "int256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "offerTime",
                            "type": "uint256"
                        }
                    ],
                    "name": "collateral",
                    "type": "event"
                },
                "0xeaad90c8664cdf61d60bd7ba6745a881fd1c38d9f4ff0b373b4365cdeeb0f9e8": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "platform",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "collection",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "name": "feecollection",
                    "type": "event"
                },
                "0x4f21132feec602e5e9588b602a7ede709b68eed293452dd8745c2c80cb3c3f11": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "party",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "counterparty",
                            "type": "address"
                        },
                        {
                            "indexed": true,
                            "internalType": "address",
                            "name": "securityTraded",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "securityAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "currencySettled",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "cashAmount",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "orderRef",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "name": "subscribers",
                    "type": "event"
                },
                "0xbe8183e0bf67f74150edc1b1b2ff1b35ca15cb451161a42e3c428c208c46f38f": {
                    "anonymous": false,
                    "inputs": [
                        {
                            "indexed": true,
                            "internalType": "bytes32",
                            "name": "poolid",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "transferor",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "transferee",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "unitsToTransfer",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "security",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "address",
                            "name": "currency",
                            "type": "address"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "amountPaid",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "cref",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "bytes32",
                            "name": "ref",
                            "type": "bytes32"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "fee",
                            "type": "uint256"
                        },
                        {
                            "indexed": false,
                            "internalType": "uint256",
                            "name": "timestamp",
                            "type": "uint256"
                        }
                    ],
                    "name": "tradeSettled",
                    "type": "event"
                }
            },
            "links": {},
            "address": "0x095a3075De6950530F6053C97dB06cc74E78E11e",
            "transactionHash": "0x343b80fcfa359533c7af79eeb79e811ed213085e78f1fdbf56d8bdd49e9486bc"
        }
    },
    "schemaVersion": "3.4.16",
    "updatedAt": "2025-05-05T06:16:15.758Z",
    "networkType": "ethereum",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "owner()": {
                "details": "Returns the address of the current owner."
            },
            "renounceOwnership()": {
                "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
            },
            "transferOwnership(address)": {
                "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
            }
        },
        "version": 1
    },
    "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
    }
}
