@dolomite-exchange/dolomite-margin
Version:
Ethereum Smart Contracts and TypeScript library used for the DolomiteMargin trading protocol
819 lines • 218 kB
JSON
{
"contractName": "EventEmitterRegistry",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "dolomiteMargin",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "borrower",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "borrowAccountNumber",
"type": "uint256"
}
],
"name": "BorrowPositionOpen",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "accountOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "accountNumber",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "inputToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "outputToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "withdrawalToken",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "inputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "outputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "marginWithdrawalUpdate",
"type": "tuple"
}
],
"name": "MarginPositionClose",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "accountOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "accountNumber",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "inputToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "outputToken",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "depositToken",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "inputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "outputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"indexed": false,
"internalType": "struct Events.BalanceUpdate",
"name": "marginDepositUpdate",
"type": "tuple"
}
],
"name": "MarginPositionOpen",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "accountOwner",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "accountNumber",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "marketIdsPath",
"type": "uint256[]"
},
{
"components": [
{
"internalType": "enum IGenericTraderProxyBase.TraderType",
"name": "traderType",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "makerAccountIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "trader",
"type": "address"
},
{
"internalType": "bytes",
"name": "tradeData",
"type": "bytes"
}
],
"indexed": false,
"internalType": "struct IGenericTraderProxyBase.TraderParam[]",
"name": "tradersPath",
"type": "tuple[]"
}
],
"name": "ZapExecuted",
"type": "event"
},
{
"constant": true,
"inputs": [],
"name": "DOLOMITE_MARGIN",
"outputs": [
{
"internalType": "contract IDolomiteMargin",
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_accountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_accountNumber",
"type": "uint256"
},
{
"internalType": "uint256[]",
"name": "_marketIdsPath",
"type": "uint256[]"
},
{
"components": [
{
"internalType": "enum IGenericTraderProxyBase.TraderType",
"name": "traderType",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "makerAccountIndex",
"type": "uint256"
},
{
"internalType": "address",
"name": "trader",
"type": "address"
},
{
"internalType": "bytes",
"name": "tradeData",
"type": "bytes"
}
],
"internalType": "struct IGenericTraderProxyBase.TraderParam[]",
"name": "_tradersPath",
"type": "tuple[]"
}
],
"name": "emitZapExecuted",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_accountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_accountNumber",
"type": "uint256"
}
],
"name": "emitBorrowPositionOpen",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_accountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_accountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_inputToken",
"type": "address"
},
{
"internalType": "address",
"name": "_outputToken",
"type": "address"
},
{
"internalType": "address",
"name": "_depositToken",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_inputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_outputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_marginDepositUpdate",
"type": "tuple"
}
],
"name": "emitMarginPositionOpen",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_accountOwner",
"type": "address"
},
{
"internalType": "uint256",
"name": "_accountNumber",
"type": "uint256"
},
{
"internalType": "address",
"name": "_inputToken",
"type": "address"
},
{
"internalType": "address",
"name": "_outputToken",
"type": "address"
},
{
"internalType": "address",
"name": "_withdrawalToken",
"type": "address"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_inputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_outputBalanceUpdate",
"type": "tuple"
},
{
"components": [
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"internalType": "struct Types.Wei",
"name": "deltaWei",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "sign",
"type": "bool"
},
{
"internalType": "uint128",
"name": "value",
"type": "uint128"
}
],
"internalType": "struct Types.Par",
"name": "newPar",
"type": "tuple"
}
],
"internalType": "struct Events.BalanceUpdate",
"name": "_marginWithdrawalUpdate",
"type": "tuple"
}
],
"name": "emitMarginPositionClose",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dolomiteMargin\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"borrowAccountNumber\",\"type\":\"uint256\"}],\"name\":\"BorrowPositionOpen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"withdrawalToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"marginWithdrawalUpdate\",\"type\":\"tuple\"}],\"name\":\"MarginPositionClose\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"marginDepositUpdate\",\"type\":\"tuple\"}],\"name\":\"MarginPositionOpen\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"accountOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"accountNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"marketIdsPath\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"enum IGenericTraderProxyBase.TraderType\",\"name\":\"traderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"makerAccountIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"tradeData\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IGenericTraderProxyBase.TraderParam[]\",\"name\":\"tradersPath\",\"type\":\"tuple[]\"}],\"name\":\"ZapExecuted\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DOLOMITE_MARGIN\",\"outputs\":[{\"internalType\":\"contract IDolomiteMargin\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"}],\"name\":\"emitBorrowPositionOpen\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_withdrawalToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_marginWithdrawalUpdate\",\"type\":\"tuple\"}],\"name\":\"emitMarginPositionClose\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_inputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_outputToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_depositToken\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_inputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_outputBalanceUpdate\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.Wei\",\"name\":\"deltaWei\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"sign\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"value\",\"type\":\"uint128\"}],\"internalType\":\"struct Types.Par\",\"name\":\"newPar\",\"type\":\"tuple\"}],\"internalType\":\"struct Events.BalanceUpdate\",\"name\":\"_marginDepositUpdate\",\"type\":\"tuple\"}],\"name\":\"emitMarginPositionOpen\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_accountOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_accountNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_marketIdsPath\",\"type\":\"uint256[]\"},{\"components\":[{\"internalType\":\"enum IGenericTraderProxyBase.TraderType\",\"name\":\"traderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"makerAccountIndex\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"tradeData\",\"type\":\"bytes\"}],\"internalType\":\"struct IGenericTraderProxyBase.TraderParam[]\",\"name\":\"_tradersPath\",\"type\":\"tuple[]\"}],\"name\":\"emitZapExecuted\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Dolomite\",\"details\":\"Proxy contract for emitting events for a singular address when a margin position is opened or closed\",\"methods\":{},\"title\":\"EventEmitterRegistry\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/EventEmitterRegistry.sol\":\"EventEmitterRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/helpers/OnlyDolomiteMargin.sol\":{\"keccak256\":\"0xe40babc0a6dd2a767d76f3e0f0a22de124c4c480f2b2227a7b924b44e57526ea\",\"urls\":[\"bzz-raw://458f7f1f16eacd4faae597090503dc1e58446e9d371640c77b2e01e3e3113f17\",\"dweb:/ipfs/QmXqTG4sWJeDh5XA286KarbqHT4qJ7m3dphS16enpqtQiX\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IEventEmitterRegistry.sol\":{\"keccak256\":\"0x51ae058dafa3850ba14ea352c637af48e213c4b4e69e4d398b84ec6fed91d309\",\"urls\":[\"bzz-raw://974dda23508e2d7428433db7fb280c1bc82e197fd68f9d425c57f7bf57fdf82f\",\"dweb:/ipfs/QmeTteQN1tMXChaQ4nzBvLpndVfghaoznsQDM8kAqgDeF9\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/interfaces/IGenericTraderProxyBase.sol\":{\"keccak256\":\"0x2ac2830618b13f412f53c803cb8c5e79f1ea1a7da0767fb0c6430a3435153f6f\",\"urls\":[\"bzz-raw://5e128520cdac823bc7dbe5331708c650d9a4ad6a18ec3bb7d9e8739f8360cfc0\",\"dweb:/ipfs/QmcDcrnMcXUGm7NT3q6Z4idFzqcNZukrwHn5GjX44u5Win\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/external/proxies/EventEmitterRegistry.sol\":{\"keccak256\":\"0xf9f9e84186f1f20ed561dcf8e9061436b33b7e34f033b0522354ea0f9ec80297\",\"urls\":[\"bzz-raw://508242cf513ecd0da1d41dd13f8643eed155b771f4d85da403bf1bb8a369f9fc\",\"dweb:/ipfs/QmZ5EQHWNiZvgWE1dvRKJWqzzYBcKopMVh7xpAFB7itCDv\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IDolomiteMargin.sol\":{\"keccak256\":\"0x7e86ed1ed04dc205245db9f4e7cf7cca60c3bfc46c57ade8129a463780647967\",\"urls\":[\"bzz-raw://f8fbd85afd334c12bdccbb6523ebea9172b27b7b4b132c4a48b4b4dd03ceeb2b\",\"dweb:/ipfs/QmU1srfSqBTz3kw7oz1KEzfTUJvphZiE4K8MRZcy9uJjv1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b50604051620012cd380380620012cd83398101604081905261003191610067565b600080546001600160a01b0319166001600160a01b03929092169190911790556100b5565b80516100618161009e565b92915050565b60006020828403121561007957600080fd5b60006100858484610056565b949350505050565b60006001600160a01b038216610061565b6100a78161008d565b81146100b257600080fd5b50565b61120880620000c56000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063255a3bf711610050578063255a3bf71461009f5780632b1ca6cd146100b257806362eeb68e146100c557610067565b80630f680cc21461006c57806315c14a4a14610081575b600080fd5b61007f61007a366004610abb565b6100d8565b005b610089610230565b6040516100969190610f7d565b60405180910390f35b61007f6100ad366004610b6d565b61024c565b61007f6100c0366004610abb565b610301565b61007f6100d3366004610a81565b6103ae565b6000546040517f052f72d700000000000000000000000000000000000000000000000000000000815233916101cc9173ffffffffffffffffffffffffffffffffffffffff9091169063052f72d790610134908590600401610f13565b60206040518083038186803b15801561014c57600080fd5b505afa158015610160573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101849190810190610bfe565b7f4f6e6c79446f6c6f6d6974654d617267696e00000000000000000000000000007f4f6e6c7920676c6f62616c206f70657261746f722063616e2063616c6c00000084610452565b878973ffffffffffffffffffffffffffffffffffffffff167fecf4fe97b02d1620f6c04edbd484eff130a2247b31ac1ef061f54c8177b657b989898989898960405161021d96959493929190610f21565b60405180910390a3505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000546040517f052f72d700000000000000000000000000000000000000000000000000000000815233916102a89173ffffffffffffffffffffffffffffffffffffffff9091169063052f72d790610134908590600401610f13565b8473ffffffffffffffffffffffffffffffffffffffff167f4734ab23c4afeb4c308f754e6840d7f06d306a7331f39119ac53c8ee656ec2cf8585856040516102f293929190610f9c565b60405180910390a25050505050565b6000546040517f052f72d7000000000000000000000000000000000000000000000000000000008152339161035d9173ffffffffffffffffffffffffffffffffffffffff9091169063052f72d790610134908590600401610f13565b878973ffffffffffffffffffffffffffffffffffffffff167fb81518bcaf15a56ac0e4b0ff579f0bd8e163ac444d526743908dc22733789f0689898989898960405161021d96959493929190610f21565b6000546040517f052f72d7000000000000000000000000000000000000000000000000000000008152339161040a9173ffffffffffffffffffffffffffffffffffffffff9091169063052f72d790610134908590600401610f13565b604051829073ffffffffffffffffffffffffffffffffffffffff8516907ffd9156bd20ce24a786c761efe71a3931de038c1f2620c1bb4720609bc742b58e90600090a3505050565b836105515761046083610557565b7f3a2000000000000000000000000000000000000000000000000000000000000061048a84610557565b7f203c0000000000000000000000000000000000000000000000000000000000006104b485610631565b6040516104ea9594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001610eb5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261054891600401610f8b565b60405180910390fd5b50505050565b6060808260405160200161056b9190610ea0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b80156106145781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909101908290829081106105d757fe5b01602001517fff00000000000000000000000000000000000000000000000000000000000000161561060f576001018152905061062c565b61059e565b5060408051600080825260208201909252905b509150505b919050565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061067d57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b816001815181106106be57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b60148110156106275760028102610709600f85166107a8565b83826029038151811061071857fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c935061075a600f85166107a8565b83826028038151811061076957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016106f0565b6000600a8210156107c057506030810160f81b61062c565b5060570160f81b90565b80356107d581611189565b92915050565b600082601f8301126107ec57600080fd5b81356107ff6107fa82610ff7565b610fd0565b81815260209384019390925082018360005b8381101561083d578135860161082788826109a9565b8452506020928301929190910190600101610811565b5050505092915050565b600082601f83011261085857600080fd5b81356108666107fa82610ff7565b9150818183526020840193506020810190508385602084028201111561088b57600080fd5b60005b8381101561083d57816108a18882610a76565b845250602092830192919091019060010161088e565b80356107d58161119d565b80516107d58161119d565b600082601f8301126108de57600080fd5b81356108ec6107fa82611018565b9150808252602083016020830185838301111561090857600080fd5b61091383828461111c565b50505092915050565b80356107d5816111a6565b60006080828403121561093957600080fd5b6109436040610fd0565b905060006109518484610a30565b82525060406109628484830161096e565b60208301525092915050565b60006040828403121561098057600080fd5b61098a6040610fd0565b9050600061099884846108b7565b825250602061096284848301610a6b565b6000608082840312156109bb57600080fd5b6109c56080610fd0565b905060006109d3848461091c565b82525060206109e484848301610a76565b60208301525060406109f8848285016107ca565b604083015250606082013567ffffffffffffffff811115610a1857600080fd5b610a24848285016108cd565b60608301525092915050565b600060408284031215610a4257600080fd5b610a4c6040610fd0565b90506000610a5a84846108b7565b825250602061096284848301610a76565b80356107d5816111b3565b80356107d5816111bc565b60008060408385031215610a9457600080fd5b6000610aa085856107ca565b9250506020610ab185828601610a76565b9150509250929050565b600080600080600080600080610220898b031215610ad857600080fd5b6000610ae48b8b6107ca565b9850506020610af58b828c01610a76565b9750506040610b068b828c016107ca565b9650506060610b178b828c016107ca565b9550506080610b288b828c016107ca565b94505060a0610b398b828c01610927565b935050610120610b4b8b828c01610927565b9250506101a0610b5d8b828c01610927565b9150509295985092959890939650565b60008060008060808587031215610b8357600080fd5b6000610b8f87876107ca565b9450506020610ba087828801610a76565b935050604085013567ffffffffffffffff811115610bbd57600080fd5b610bc987828801610847565b925050606085013567ffffffffffffffff811115610be657600080fd5b610bf2878288016107db565b91505092959194509250565b600060208284031215610c1057600080fd5b6000610c1c84846108c2565b949350505050565b6000610c308383610e0f565b9392505050565b6000610c438383610e97565b505060200190565b610c5481611071565b82525050565b6000610c6582611064565b610c6f8185611068565b935083602082028501610c818561105e565b8060005b85811015610cbb578484