{
  "contractName": "LiquidateOrVaporizeImpl",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"A library that combines shares code for executing Liquidation or Vaporization actions.\",\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":\"LiquidateOrVaporizeImpl\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol\":{\"keccak256\":\"0xc05fd822f0991a652f6c9bc0328370bb15ff5eb3ba89cbc1d9140e4835004e7a\",\"urls\":[\"bzz-raw://842e9c896073941e69fbdc32b21b50f873a8bb57c38c810ef70e7b64ee0c3ff7\",\"dweb:/ipfs/QmRBY47DUJQ3KQ7yKvCimv6vstkk6i3fFUQPtWXfG2mXHg\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IAccountRiskOverrideSetter.sol\":{\"keccak256\":\"0x5b9fde139ddfdaae7b650b3c3f6699e0e44605f0d9d3daadc1622eb06ad4c3f8\",\"urls\":[\"bzz-raw://2dfd5af24b6de63f94519c99fd8777a264d7cd11266fa2d525c7d72d96a9c7cf\",\"dweb:/ipfs/QmPg9fjhbnmBayZMh6yTG79xsK1PWSoAHA5pfwSXfnKKjF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IERC20Detailed.sol\":{\"keccak256\":\"0x22a62e2a8155e70300773721902f4b9118e17aa0bb5d9d1b046050a014cfb223\",\"urls\":[\"bzz-raw://03af737a33c552fbe58f6f1fbd5496854fdc28dd57be4365d56663725c083a18\",\"dweb:/ipfs/QmbgLqGAQEd6tXsZB8QaPNCAMiU6nNzP75wNbKdS65BuUF\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol\":{\"keccak256\":\"0xd8134eac006b0a59b71cbcca82dfce7ce092a57c13a8383ebf0e8bc90c0df3e7\",\"urls\":[\"bzz-raw://ccead8bdcc71402ae7b1d8fb9bc1527081a5eb14f98a5157f5c6f27f21f8ad31\",\"dweb:/ipfs/QmdnDvTiX3EDm93ahjnZabNNgoyQzGtKpfbQUNtJe7t8Ts\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IInterestSetter.sol\":{\"keccak256\":\"0x546825f65490a30e29d0f6446acec49c1e895ce6b33d48ca5c05092725a63a57\",\"urls\":[\"bzz-raw://6ad3013aed985bdf6e6234ae0f7f37e6bba76c3470c33bfa24678cf19b3b412c\",\"dweb:/ipfs/QmfYaSBzxGpgiHoR7ontMJY66S5L26XwkLYoEuzsEjpbQH\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IOracleSentinel.sol\":{\"keccak256\":\"0xa94499fda55ef112640daed2cb1d06062e72c51c7b925c323b4e0ffa9b456ce5\",\"urls\":[\"bzz-raw://18b4a16acac577590a57f34f7ec6583e3cb35f575c948abb928b308d29cac1ab\",\"dweb:/ipfs/QmR1jLkzj6w7SjrdZ7GVW4V2vofSdMJwzjTqKpeUKABvxu\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IPriceOracle.sol\":{\"keccak256\":\"0x3f7c3d1397390ea44c6d5e5730d49476431c3df3b28334fe38218de5edc31138\",\"urls\":[\"bzz-raw://63ebf926fca9ce33aaabaf93805686acc25daded1648d6dab59c8c4d05116918\",\"dweb:/ipfs/QmeGkDp7ycYstpfqCYBiqoCYwy876gabx8r42o5koj3H5A\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol\":{\"keccak256\":\"0x2059276ea5e478bd5ac7f2712e7b1b6c85d291c647a54b264909044844828e67\",\"urls\":[\"bzz-raw://f153777051d12131b13a57e5c3af10a2670927cfc7d22c9519ab20c9b4b9bc89\",\"dweb:/ipfs/QmQMP3qS5xDAVGYKDfNkbkSqBKozQGQsGqX4e8VyjRtxPS\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol\":{\"keccak256\":\"0x7b2fcf441c034952dd042b6c8b20b148359db771e7c9ac07d06369560a9f0301\",\"urls\":[\"bzz-raw://84665ee4a780360fe6160d197ba98f0bf0ab0d7c6ad87bfed6226bf2f88d8d30\",\"dweb:/ipfs/QmRDfRdAd8hSXeu4SAeeYKkKoXBhStu7n4uReYBce2JD5Z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Bits.sol\":{\"keccak256\":\"0x6d9a641163b2dd25e648c65f5d9e4949a57938e29ddc4c9dddefd74a9964aeef\",\"urls\":[\"bzz-raw://67e5a04ed4055faafbc100d6ccca9c54448ed378a1a8c71171562edda7bcbf7c\",\"dweb:/ipfs/QmYRikK3Xbgiq3UBJkgoo2zNUSSrShVabpRHmQj6iQHhrc\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol\":{\"keccak256\":\"0xe57c80a7621a77fcb2acb9f883fb5248e71a6dce03bc2db56df0db3fee332950\",\"urls\":[\"bzz-raw://28e221c04629674490b9a0041d4f9a5f15e669dc0cc192a5df6e2c701c36369f\",\"dweb:/ipfs/QmaL3oh8c7v9cx91pB175pyCEuzxnhNTab4UxmBMsDYfUx\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol\":{\"keccak256\":\"0xd9a348c2b1eec076609ba12bbec6b9c2e4ea135790a7ef4f5411feb050af2144\",\"urls\":[\"bzz-raw://d5bcff29e47d5cd02d7a9966e9f44c46ccbb4f0e4adfc4b0b86646880677db39\",\"dweb:/ipfs/QmRKfJD4FFM1AvTynSFNx1NcDg94o9SAcjz7dvMaJCfecp\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol\":{\"keccak256\":\"0x53f205f6a779d579be29faa9412c806a892b3e605fff092dfd9d14d936fa019f\",\"urls\":[\"bzz-raw://0ff936f89602a63b8e6a4eb4ce8f87673c0f45b7ce29694920905a3f0b5a6a69\",\"dweb:/ipfs/QmbYME9BeEvPC1ndV8EaUDX5fDMghLc3rocNUxFtgHmg8m\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/EnumerableSet.sol\":{\"keccak256\":\"0x41a3460e34b7b8635d936e35e6568ceb5354b638f53b884530e0d4875fa0f151\",\"urls\":[\"bzz-raw://d1a5ba866ee95d455afe5075dadd91fc71c2806371f2c1b358a1f67c632bb0df\",\"dweb:/ipfs/QmW4qCjmsG8J3UJv97GwDLDM7wt1K4yLDKAwzWMY7TFYi5\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol\":{\"keccak256\":\"0x2345dcc1ebf53a3d5449dab083b1fb90b5362dae692f8ff3ad00078862894e9b\",\"urls\":[\"bzz-raw://ebd34c557c06caf0696774844f0ca9746412ecc452bdd978b3bca0fd71aefbde\",\"dweb:/ipfs/QmcwXXKgv77DqfhxABRg85WR6RBPTLmge5vJGp99o9kFf8\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/ExcessivelySafeCall.sol\":{\"keccak256\":\"0x9369468538c371057c907f84d438cec6b47673711fe289cc3779f8671314e06b\",\"urls\":[\"bzz-raw://0f59a670f4bc5cf1bd3dd58bdf6c31723d9d84d9da7d9283d6860cdf5f33b7c5\",\"dweb:/ipfs/QmTGuvD5WQD2z56GH35HoPJivKPeeEpbXidJVcbXZyT23C\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol\":{\"keccak256\":\"0x141a0ecb4a746f0e5767df4b99dbe33c6362df507ae9d5c02da1c1c17bc26df3\",\"urls\":[\"bzz-raw://9ff03e64a8ce5231acde07788624bf8c7a8ff55d90b157fa32f62fa887a0eff0\",\"dweb:/ipfs/QmUVxxWeE954RDXbmHJAYnHsXcit6rSXGqZUigu8t9oH2z\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol\":{\"keccak256\":\"0x5257274f2d4d3605f3e97ec45fb902111fe9a22506f0b4cf308ea933bc81bfe2\",\"urls\":[\"bzz-raw://85b8023b78805063a2ec8d376f1f5983994eabd96efd8ceadb0224dbb71c5678\",\"dweb:/ipfs/QmaDhzCzRqsuHuJfhToEC4pATQHwhh7yWWsjwfuRzFT1kG\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol\":{\"keccak256\":\"0x05a2a90b41b6a5f42f0a72da63d015fb0b406a9ba2172823352e522e8bf3a606\",\"urls\":[\"bzz-raw://19883f0c6d33266f756ec5c3d17539524aa24b993c46c33f8400801d09373a6c\",\"dweb:/ipfs/QmYX2fwK3vQQDSZLMrc5wMfeb8RWrcC9CGX8XECLty8QDk\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/SafeExternalCallback.sol\":{\"keccak256\":\"0xd308a1ab320de20780f7041ea5efd9568f8692e1ed6cf512b967ab63c791a8ff\",\"urls\":[\"bzz-raw://4a904b056f094be598396a90a5ba5297213934cfc2816848a494469ce249edd4\",\"dweb:/ipfs/QmcmeezMFPntDLNS1EY4j5THgRJUeyscgLv55WwxbFoiaY\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol\":{\"keccak256\":\"0x9c27f3cd52af28c9b6bca18097b1793f114d08284d78417467d0d05f67e9e2a9\",\"urls\":[\"bzz-raw://d1ed0e7a7f76d59f30572996d4e164ab8fb5b2ec4bfca127983f9e936b904813\",\"dweb:/ipfs/QmePVYbgrY8Yw3Vf76pmEvE9pX916Jaa9we4kjM8tGM4J1\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Time.sol\":{\"keccak256\":\"0x87ee8d3c1d6e315a116426d8c8fc6f083e220fd14dda27fad4e8d7cab3dc7305\",\"urls\":[\"bzz-raw://7c20f2c52da682c3b5917fb6a19e81f43699b1d13c62b569ed723f34da72e766\",\"dweb:/ipfs/QmbXWYXi67nHBVNDKYUpo2E9ZaEVcHLvmXQkpYLMm1d5Vm\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Token.sol\":{\"keccak256\":\"0x095b5f8eb3665f6e246200311efc8a654fa3e90f9a1a522e27a4d089e8ab3917\",\"urls\":[\"bzz-raw://5db812b752a03d601d424e6e21be38153477082af0acf51b5c98eefa5553ed18\",\"dweb:/ipfs/QmbE549QUXYTurpx8hSMLBJvuBpfYqyNE6FBCgHJDY8PLf\"]},\"/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol\":{\"keccak256\":\"0xe1bab8c8799d83e86c7a49aaf815d8e3bc8d09562d46d44d921500db5e98de0e\",\"urls\":[\"bzz-raw://8ea3d0cc4fdab6dd9bba545a792170f939b342d8d1a7051c1c6365009af72658\",\"dweb:/ipfs/QmaLJgbavu88eEit6JPqfWnw6NmGBDZfveMXxumgWywBFG\"]},\"@openzeppelin/contracts/math/Math.sol\":{\"keccak256\":\"0x4b5aa451e4e8801478708f94b118a7821c0500d676255eaf89fc78c14856ce4e\",\"urls\":[\"bzz-raw://bed15b3f35ed05505efc8fb5cb01d06c52230fbcaadf4ed24a85b1ac2f15f33c\",\"dweb:/ipfs/QmS6tW81u8E4tvzVfVuqEuMCkdwAozQ6pKJPRBR4JEVmQp\"]},\"@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\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x1a8e5072509c5ea7365eb1d48030b9be865140c8fb779968da0a459a0e174a11\",\"urls\":[\"bzz-raw://03335b7b07c7c8c8d613cfdd8ec39a0b5ec133ee510bf2fe6cc5a496767bef4b\",\"dweb:/ipfs/Qmebp4nzPja645c9yXSdJkGq96oU3am3LUnG2K3R7XxyKf\"]}},\"version\":1}",
  "bytecode": "0x61457c610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80637b846b6214610045578063b0909ea014610067575b600080fd5b81801561005157600080fd5b50610065610060366004613e3a565b610087565b005b81801561007357600080fd5b50610065610082366004613e3a565b6104e8565b610097833363ffffffff61086616565b600c830154604080517f7a5d20ea00000000000000000000000000000000000000000000000000000000815290516101849273ffffffffffffffffffffffffffffffffffffffff1691637a5d20ea916004808301926020929190829003018186803b15801561010557600080fd5b505afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061013d9190810190613dad565b7f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f4c69717569646174696f6e73206172652064697361626c6564000000000000006108c6565b604081015161019a90849063ffffffff61097716565b60028111156101a557fe5b60011461023b576040810151610223906101c990859085600063ffffffff6109b816565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f556e6c6971756964617461626c65206163636f756e7400000000000000000000846040015160000151856040015160200151610acf565b604081015161023b908490600163ffffffff610b9a16565b61024361383a565b604082015160808301516102759190610262868263ffffffff610c0f16565b60a001518792919063ffffffff610c8316565b90506102d061028382610cd8565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206e656761746976650000008560800151610cf5565b6102d8613851565b60608301516102ee90859063ffffffff610c0f16565b60a0015190506102fc613851565b608084015161031290869063ffffffff610c0f16565b60a00151905061032061383a565b61032861383a565b604086015160608701518751610349928b929091889063ffffffff610d9316565b91509150610355613871565b61035d613871565b6103768a8a8a604001518b608001518c60600151610f3f565b9150915061038261383a565b61038d848484610fd8565b90508760200151816020015111156103fd576103a888611015565b90506103b581848461103c565b93506103db89604001518a608001516103cc61106f565b8e92919063ffffffff61108f16565b604089015160608a01516103f8918d918a8863ffffffff61156d16565b610436565b604089015160608a0151610419918d918863ffffffff61108f16565b604089015160808a0151610436918d91898563ffffffff61156d16565b61045d89602001518a606001518961044d88611015565b8f9392919063ffffffff61156d16565b61047489602001518a608001518861044d85611015565b60008b60070160060154905061049f8a604001518b602001518c60800151858e606001518a876115e6565b6104ce8a602001518b604001518c608001516104ba86611015565b8e606001516104c88b611015565b876115e6565b6104da8c8b8488611851565b505050505050505050505050565b60208101516104ff9084903363ffffffff61197916565b604081015161051590849063ffffffff61097716565b600281111561052057fe5b6002146105b0576040810151610598906105429085908563ffffffff611a2c16565b604083015180516020909101517f4c69717569646174654f725661706f72697a65496d706c000000000000000000917f556e7661706f72697a61626c65206163636f756e74000000000000000000000091610acf565b60408101516105b0908490600263ffffffff610b9a16565b60006105ba61383a565b6105df85846105d6866060015188610c0f90919063ffffffff16565b60a00151611ab4565b91509150811561060b5761060485846105f661106f565b6105fe61106f565b85611b97565b5050610861565b61061361383a565b608084015161062990879063ffffffff611c9416565b905061068461063782610cd8565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f4578636573732063616e6e6f74206265206e65676174697665000000000000008760800151610cf5565b61068c61383a565b61069461383a565b604086015160608701516106c991906106b38a8263ffffffff610c0f16565b60a0015189518c9392919063ffffffff610d9316565b915091506106d5613871565b6106dd613871565b61071e8a8a6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508b608001518c60600151610f3f565b9150915061072a61383a565b610735848484610fd8565b90508560200151816020015111156107975761075086611015565b905061075d81848461103c565b60408a015160608b01519195506107929161077e8d8263ffffffff610c0f16565b60a001518e9291908863ffffffff61156d16565b6107b3565b604089015160608a01516107b3918d918863ffffffff61108f16565b602089015160608a01516107df91906107d28d8263ffffffff610c0f16565b60a0015161044d88611015565b602089015160808a015161080b91906107fe8d8263ffffffff610c0f16565b60a0015161044d85611015565b600d8b015460408a015160208b015160808c015161083992919061082d61106f565b8e606001518a876115e6565b6108548a602001518b604001518c608001516104ba86611015565b6104da8c8b84888c611b97565b505050565b6000610878838363ffffffff611def16565b9050610861817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e656420676c6f62616c206f70657261746f72000085611e1e565b82610861576108d482611e80565b7f3a200000000000000000000000000000000000000000000000000000000000006108fe83611e80565b604051602001610910939291906140a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261096e916004016141b2565b60405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff166000908152600383016020908152604080832082850151845290915290205460ff165b92915050565b60006109ca858563ffffffff611f5816565b6109d657506001610ac7565b6109de613871565b6109e88686611f9f565b5090506109f3613871565b6109fb613871565b610a0f88888860018763ffffffff61212e16565b915091508415610a7957600a8801548151885160208a0151610a799390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610acf565b8251610a945760408051602081019091526007890154815292505b6000610aa48260000151856122b6565b8251909150610ab9908263ffffffff6122cf16565b836000015110159450505050505b949350505050565b84610b9357610add84611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000610b0785611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610b318661230e565b7f2c20000000000000000000000000000000000000000000000000000000000000610b5b87612485565b60405161091097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001614128565b5050505050565b815173ffffffffffffffffffffffffffffffffffffffff1660009081526003840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610c0557fe5b0217905550505050565b610c17613884565b825151610c679015157f43616368650000000000000000000000000000000000000000000000000000007f6e6f7420696e697469616c697a656400000000000000000000000000000000006108c6565b610c7c83600001516000856060015185612594565b9392505050565b610c8b61383a565b610c9361383a565b610ca486868663ffffffff61264f16565b9050610caf816126cf565b15610cc457610cbc61106f565b915050610ac7565b610cce81846126e9565b9695505050505050565b8051600090158015610ced5750602082015115155b90505b919050565b83610d8d57610d0383611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000610d2d84611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610d5785612485565b6040516109109594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016140ca565b50505050565b610d9b61383a565b610da361383a565b610dab61383a565b610dbc88888863ffffffff61264f16565b9050610e1c610dca8261279e565b157f53746f72616765000000000000000000000000000000000000000000000000007f4f7765642062616c616e63652063616e6e6f7420626520706f736974697665008a600001518b60200151610acf565b610e2461383a565b610e2c61383a565b610e3f8a8a8a8a8a63ffffffff6127c616565b91509150610e4c8261279e565b15610e7857610e5961106f565b9150610e75610e708b8b8b8b63ffffffff610c8316565b611015565b90505b610f0e610e8482610cd8565b158015610ebd575082602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610155b7f53746f72616765000000000000000000000000000000000000000000000000007f4f7765642062616c616e63652063616e6e6f7420696e637265617365000000008c600001518d60200151610acf565b610f1e838363ffffffff61295416565b15610f2e57610f2b61106f565b90505b9093509150505b9550959350505050565b610f47613871565b610f4f613871565b6000610f61878563ffffffff610c0f16565b60c00151519050610f70613871565b610f828988888863ffffffff6129c616565b9050610f8c613871565b6040518060200160405280610fb1610fa486866122b6565b869063ffffffff6122cf16565b90529050610fc5898863ffffffff610c0f16565b60c001519a909950975050505050505050565b610fe061383a565b604051806040016040528060001515815260200161100b866020015185600001518760000151612a84565b9052949350505050565b61101d61383a565b5060408051808201909152815115815260208083015190820152919050565b61104461383a565b604051806040016040528060011515815260200161100b866020015186600001518660000151612aa6565b61107761383a565b50604080518082019091526000808252602082015290565b61109761383a565b6110a885858563ffffffff61264f16565b90506110b48183612954565b156110bf5750610d8d565b6110c761383a565b6110d7868563ffffffff612aff16565b8251909150156111445761112861112383602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16612b5f90919063ffffffff16565b612ba1565b6fffffffffffffffffffffffffffffffff166020820152611189565b6020820151815161117491611123916fffffffffffffffffffffffffffffffff908116911663ffffffff612b5f16565b6fffffffffffffffffffffffffffffffff1681525b8251156111ee576111d261112384602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff166122cf90919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152611233565b6020830151815161121e91611123916fffffffffffffffffffffffffffffffff908116911663ffffffff6122cf16565b6fffffffffffffffffffffffffffffffff1681525b61123c82612c04565b801561124c575061124c83612c2e565b156112e957845173ffffffffffffffffffffffffffffffffffffffff1660009081526003870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff90911617905561137b565b6112f282612c2e565b8015611302575061130283612c04565b1561137b57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b611384836126cf565b80156113965750611394826126cf565b155b156113ea57845173ffffffffffffffffffffffffffffffffffffffff166000908152600387016020908152604080832082890151845290915290206113e4906001018563ffffffff612c4416565b50611454565b6113f3836126cf565b1580156114045750611404826126cf565b1561145457845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020611452906001018563ffffffff612d2a16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090971696909617861693909317909255875173ffffffffffffffffffffffffffffffffffffffff1683526003808a018252828420898301518552825282842088855201815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61157681612d74565b1561158057610b93565b61158861383a565b61159a8686868663ffffffff610c8316565b90506115a461383a565b6115b4828463ffffffff612d7c16565b90506115be61383a565b6115c88286612e0e565b90506115dc8888888463ffffffff61108f16565b5050505050505050565b8015801590611611575086516116119073ffffffffffffffffffffffffffffffffffffffff16612ed5565b15611848576101006000606061171061162a5a86612f0e565b60208c015160405186917fdcd3f52e000000000000000000000000000000000000000000000000000000009161166d91908f908f908f908f908f9060240161421f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091528d5173ffffffffffffffffffffffffffffffffffffffff1692919063ffffffff612f2416565b91509150811561177557896000015173ffffffffffffffffffffffffffffffffffffffff167fdf30e54991e6c9ca0d354a3eec6c41160a3957d6a6a1e045b61cb4fa78a881588b6020015160405161176891906141f1565b60405180910390a2611844565b60448151101561179457506040805160208101909152600081526117eb565b60448101516004909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc84018111156117d3576044840360408301525b818060200190516117e79190810190613dcb565b9150505b896000015173ffffffffffffffffffffffffffffffffffffffff167f80286932449c34f135af231b834d24382a883e1ae7e17796d9f842ffec060bc28b602001518360405161183b9291906141ff565b60405180910390a25b5050505b50505050505050565b6118596138cd565b611875858560200151866080015161187087611015565b612f97565b905061187f6138cd565b611896868660200151876060015161187087611015565b90506118a06138cd565b6118b4878760400151886080015188612f97565b90506118be6138cd565b6118d2888860400151896060015188612f97565b905086604001516000015173ffffffffffffffffffffffffffffffffffffffff1687602001516000015173ffffffffffffffffffffffffffffffffffffffff167f1b9e65b359b871d74b1af1fc8b13b11635bfb097c4631b091eb762fda7e67dc78960200151602001518a60400151602001518b608001518c606001518a8a8a8a6040516119679897969594939291906142e5565b60405180910390a35050505050505050565b6000826000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119c457506119c4848363ffffffff611def16565b806119de575082516119de9085908463ffffffff612fcc16565b9050610d8d817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f7200000000000000000085611e1e565b60008080611a3984613009565b905060005b81811015611aa957611a4e61383a565b611a7187611a62888563ffffffff61300e16565b518a919063ffffffff61264f16565b9050611a7c816126cf565b15611a875750611aa1565b805115611a9b576000945050505050610c7c565b60019350505b600101611a3e565b509095945050505050565b6000611abe61383a565b611ac661383a565b6060850151611adc90879063ffffffff611c9416565b9050611ae78161308a565b611aff576000611af561106f565b9250925050611b8f565b611b0761383a565b60408601516060870151611b239189918863ffffffff610c8316565b600181526020808201519084015191925011611b6a57611b5d86604001518760600151611b4e61106f565b8a92919063ffffffff61108f16565b600193509150611b8f9050565b60408601516060870151611b87918991888663ffffffff61156d16565b506000925090505b935093915050565b611b9f6138cd565b611bb6868660200151876080015161187088611015565b9050611bc06138cd565b611bd7878760200151886060015161187088611015565b9050611be16138cd565b60408701516060880151611c01918a91611870898963ffffffff612d7c16565b905086604001516000015173ffffffffffffffffffffffffffffffffffffffff1687602001516000015173ffffffffffffffffffffffffffffffffffffffff167fefdcfda4e0be180f29bfeebc4bcb6de1e950d70b41e9ee813bff9882ee16ca918960200151602001518a60400151602001518b608001518c60600151898989604051611967979695949392919061427a565b611c9c61383a565b611ca4613851565b611cb4848463ffffffff6130a016565b9050611cbe61383a565b611cce858563ffffffff612aff16565b90506000611ce2868663ffffffff61312c16565b9050611cec61383a565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190611d4f9030906004016141a4565b60206040518083038186803b158015611d6757600080fd5b505afa158015611d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d9f9190810190613ea0565b90529050611dab61383a565b611db361383a565b611dbd8587613158565b9092509050611de282611dd6858463ffffffff61320016565b9063ffffffff61320016565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600591909101602052604090205460011490565b83610d8d57611e2c83611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000611e5684611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610d578561230e565b60608082604051602001611e94919061408d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611f3d5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611f0057fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611f385760010181529050610cf0565b611ec7565b5060408051600080825260208201909252905b509392505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260039290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b611fa7613871565b611faf613871565b825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600f86016020526040902054168015612098576040517fca23542000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ca235420906120339087906004016141e3565b604080518083038186803b15801561204a57600080fd5b505afa15801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120829190810190613e00565b909350915061209285848461321a565b50612127565b50600e84015473ffffffffffffffffffffffffffffffffffffffff16801561210c576040517fca23542000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ca235420906120339087906004016141e3565b6121146133a5565b925061211e6133a5565b91506121279050565b9250929050565b612136613871565b61213e613871565b612146613871565b61214e613871565b85801561215a57508451155b9550600061216788613009565b905060005b818110156122a65761217c61383a565b6121b48b6121908c8563ffffffff61300e16565b516121a18d8663ffffffff61300e16565b60a001518f92919063ffffffff610c8316565b90506121bf81612d74565b156121ca575061229e565b6121d2613871565b6121da6133c0565b905089156122255761222260018e0160006121fb8e8763ffffffff61300e16565b518152602080820192909252604090810160002081519283019091526005015481526133e2565b90505b600061225061223a8d8663ffffffff61300e16565b60c001515160208501519063ffffffff61341916565b83519091501561227c57612275612267828461346d565b88519063ffffffff6122cf16565b875261229a565b61229761228982846122b6565b87519063ffffffff6122cf16565b86525b5050505b60010161216c565b5091999098509650505050505050565b6000610c7c838360000151670de0b6b3a7640000612a84565b600082820183811015610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906141c3565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061235a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061239b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f5057600281026123e6600f8516613486565b8382602903815181106123f557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612437600f8516613486565b83826028038151811061244657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016123cd565b6060816124c6575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cf0565b8160005b81156124de57600101600a820491506124ca565b6060816040519080825280601f01601f19166020018201604052801561250b576020820181803883390190505b508593509050815b801561258b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061255157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612513565b50949350505050565b61259c613884565b8383038015806125ce57508060011480156125ce5750828686815181106125bf57fe5b60200260200101516000015114155b156125d557fe5b6000600182901c8601905060008782815181106125ee57fe5b60200260200101516000015190508085101561261a5761261088888488612594565b9350505050610ac7565b808511156126315761261088836001018888612594565b87828151811061263d57fe5b60200260200101519350505050610ac7565b61265761383a565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526003938401602090815260408083209482015183529381528382209282529190930181529181902081518083019092525460ff81161515825261010090046fffffffffffffffffffffffffffffffff169181019190915290565b602001516fffffffffffffffffffffffffffffffff161590565b6126f161383a565b602083015183516fffffffffffffffffffffffffffffffff909116901561275f576040805180820190915260018152602084810151908201906127549084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134a816565b8152509150506109b2565b6040805180820190915260008152835160208201906127549084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134a816565b80516000908015610ced575050602001516fffffffffffffffffffffffffffffffff16151590565b6127ce61383a565b6127d661383a565b6127de61383a565b6127ef88888863ffffffff61264f16565b905083606001516000148015612814575060008460400151600181111561281257fe5b145b1561282c578061282261106f565b9250925050610f35565b61283461383a565b61283e82876126e9565b905061284861383a565b61285061383a565b60008760200151600181111561286257fe5b14156128ce5750604080518082019091528651151581526060870151602082015260018760400151600181111561289557fe5b14156128ae576128ab818463ffffffff61320016565b90505b6128c76128c1848363ffffffff612d7c16565b89612e0e565b9150612944565b60405180604001604052808860000151151581526020016128f28960600151612ba1565b6fffffffffffffffffffffffffffffffff169052915060008760400151600181111561291a57fe5b141561293357612930848363ffffffff61353216565b91505b61294183611dd6848b6126e9565b90505b909a909950975050505050505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156129bd5760208301516fffffffffffffffffffffffffffffffff166129ad575060016109b2565b50805182511515901515146109b2565b50600092915050565b6129ce613871565b6129d6613871565b6129e08686611f9f565b80519092501590506129f3579050610ac7565b6008860154600085815260018801602090815260409182902082519182019092526006909101548152612a30908290612a2b906133e2565b6122b6565b9050612a6b81612a2b8960010160008881526020019081526020016000206006016040518060200160405290816000820154815250506133e2565b6040805160208101909152908152979650505050505050565b6000610ac782612a9a868663ffffffff61341916565b9063ffffffff61365716565b6000831580612ab3575082155b15612aca57612ac3600083613657565b9050610c7c565b610ac76001612af384612a9a83612ae78a8a63ffffffff61341916565b9063ffffffff612b5f16565b9063ffffffff6122cf16565b612b0761383a565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b6000610c7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613699565b600081610ced6fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610cf5565b600081602001516fffffffffffffffffffffffffffffffff16600014158015610ced575050511590565b6000612c39826126cf565b80610ced5750505190565b60008181526001830160205260408120548015612d205783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214612cda576000866000018281548110612c9b57fe5b9060005260206000200154905080876000018481548110612cb857fe5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ce557fe5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109b2565b60009150506109b2565b6000612d3683836136df565b612d6c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109b2565b5060006109b2565b602001511590565b612d8461383a565b612d8c61383a565b8251845115159015151415612dbf5783511515815260208085015190840151612db591906122cf565b6020820152610c7c565b8260200151846020015110612de85783511515815260208085015190840151612db59190612b5f565b82511515815260208084015190850151612e029190612b5f565b60208201529392505050565b612e1661383a565b825115612e8e576040518060400160405280600115158152602001612e73611123670de0b6b3a764000067ffffffffffffffff1686602001516dffffffffffffffffffffffffffff1688602001516134a89092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16905290506109b2565b6040805180820190915260008152825160208581015190830191612e739161112391670de0b6b3a7640000906dffffffffffffffffffffffffffff1663ffffffff6134a816565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610ac7575050151592915050565b6000818310612f1d5781610c7c565b5090919050565b6000606060008060608661ffff166040519080825280601f01601f191660200182016040528015612f5c576020820181803883390190505b50905060008087516020890160008d8df191503d925086831115612f7e578692505b828152826000602083013e909890975095505050505050565b612f9f6138cd565b6040805180820190915282815260208101612fc187878763ffffffff61264f16565b905295945050505050565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600493909301602090815260408085209290931684525290205460011490565b515190565b613016613884565b82515161306c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906136f7565b825180518390811061307a57fe5b6020026020010151905092915050565b80516000908015610ced57505060200151151590565b6130a8613851565b506000908152600191909101602090815260409182902082516060810184526002909101546dffffffffffffffffffffffffffff80821683526e010000000000000000000000000000820416928201929092527c010000000000000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61316061383a565b61316861383a565b61317061383a565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff16908201526131a361383a565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff1660208201526131d361383a565b6131dd83876126e9565b90506131e761383a565b6131f183886126e9565b91989197509095505050505050565b61320861383a565b610c7c8361321584611015565b612d7c565b601083015482516132789167ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f526174696f20746f6f20686967680000000000000000000000000000000000006108c6565b601083015481516132e29168010000000000000000900467ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420746f6f206869676800000000000000000000000000000000006108c6565b8151158015906132f25750805115155b1561334c578151815161334791117f53746f72616765000000000000000000000000000000000000000000000000007f5370726561642063616e6e6f74206265203e3d20726174696f000000000000006108c6565b610861565b80516108619015801561335e57508251155b7f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420616e6420726174696f206d75737420626f74682062652030006108c6565b6133ad613871565b5060408051602081019091526000815290565b6133c8613871565b506040805160208101909152670de0b6b3a7640000815290565b6133ea613871565b60408051602081019091528251819061341190670de0b6b3a764000063ffffffff6122cf16565b905292915050565b600082613428575060006109b2565b8282028284828161343557fe5b0414610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906141d3565b6000610c7c83670de0b6b3a76400008460000151612a84565b6000600a82101561349e57506030810160f81b610cf0565b5060570160f81b90565b60008315806134b5575082155b156134c557612ac3600083613657565b60006134d7858563ffffffff61341916565b90506135296134f66001612af36002612a9a888463ffffffff612b5f16565b613506838663ffffffff61375916565b1015613513576000613516565b60015b60ff16612af3838663ffffffff61365716565b95945050505050565b61353a61383a565b61354261383a565b82518451151590151514156135a0578351151581526020808501519084015161358491611123916fffffffffffffffffffffffffffffffff91821691166122cf565b6fffffffffffffffffffffffffffffffff166020820152610c7c565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613606578351151581526020808501519084015161358491611123916fffffffffffffffffffffffffffffffff9182169116612b5f565b8251151581526020808401519085015161363991611123916fffffffffffffffffffffffffffffffff9182169116612b5f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b6000610c7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061379b565b600081848411156136d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b505050900390565b60009081526001919091016020526040902054151590565b84610b935761370584611e80565b7f3a2000000000000000000000000000000000000000000000000000000000000061372f85611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610b3186612485565b6000610c7c83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506137ec565b600081836137d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b5060008385816137e257fe5b0495945050505050565b60008183613827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b5082848161383157fe5b06949350505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040518060200160405280600081525090565b6040805160e08101825260008082526020820181905291810182905260608101829052608081019190915260a081016138bb613851565b81526020016138c8613871565b905290565b60405180604001604052806138e061383a565b81526020016138c861383a565b80356109b2816144e8565b600082601f83011261390957600080fd5b813561391c61391782614379565b614352565b915081818352602084019350602081019050838561012084028201111561394257600080fd5b60005b8381101561397157816139588882613ca3565b8452506020909201916101209190910190600101613945565b5050505092915050565b600082601f83011261398c57600080fd5b813561399a61391782614379565b915081818352602084019350602081019050838560208402820111156139bf57600080fd5b60005b8381101561397157816139d58882613d76565b84525060209283019291909101906001016139c2565b80356109b2816144ff565b80516109b2816144ff565b80356109b281614508565b600082601f830112613a1d57600080fd5b8151613a2b6139178261439a565b91508082526020830160208301858383011115613a4757600080fd5b613a52838284614494565b50505092915050565b600060808284031215613a6d57600080fd5b613a776080614352565b90506000613a8584846139eb565b8252506020613a9684848301613a01565b6020830152506040613aaa84828501613a01565b6040830152506060613abe84828501613d76565b60608301525092915050565b600060208284031215613adc57600080fd5b613ae66020614352565b90506000613af48484613d97565b82525092915050565b600060608284031215613b0f57600080fd5b613b196060614352565b90506000613b278484613d81565b8252506020613b3884848301613d81565b6020830152506040613b4c84828501613da2565b60408301525092915050565b600060408284031215613b6a57600080fd5b613b746040614352565b90506000613b8284846138ed565b8252506020613b9384848301613d76565b60208301525092915050565b60006101408284031215613bb257600080fd5b613bbc60a0614352565b90506000613bca8484613a5b565b8252506080613bdb84848301613b58565b60208301525060c0613bef84828501613b58565b604083015250610100613c0484828501613d76565b606083015250610120613c1984828501613d76565b60808301525092915050565b600060808284031215613c3757600080fd5b613c416080614352565b9050813567ffffffffffffffff811115613c5a57600080fd5b613c66848285016138f8565b8252506020613c7784848301613d76565b602083015250604082013567ffffffffffffffff811115613c9757600080fd5b613aaa8482850161397b565b60006101208284031215613cb657600080fd5b613cc060e0614352565b90506000613cce8484613d76565b8252506020613cdf848483016138ed565b6020830152506040613cf3848285016139eb565b6040830152506060613d0784828501613d8c565b6060830152506080613d1b84828501613d8c565b60808301525060a0613d2f84828501613afd565b60a083015250610100613d4484828501613d50565b60c08301525092915050565b600060208284031215613d6257600080fd5b613d6c6020614352565b90506000613af484845b80356109b281614515565b80356109b28161451e565b80356109b281614527565b80516109b281614515565b80356109b281614530565b600060208284031215613dbf57600080fd5b6000610ac784846139f6565b600060208284031215613ddd57600080fd5b815167ffffffffffffffff811115613df457600080fd5b610ac784828501613a0c565b60008060408385031215613e1357600080fd5b6000613e1f8585613aca565b9250506020613e3085828601613aca565b9150509250929050565b60008060006101808486031215613e5057600080fd5b6000613e5c8686613d76565b935050602084013567ffffffffffffffff811115613e7957600080fd5b613e8586828701613c25565b9250506040613e9686828701613b9f565b9150509250925092565b600060208284031215613eb257600080fd5b6000610ac78484613d97565b613ec7816143ed565b82525050565b613ec7816143f8565b613ec7613ee2826143fd565b614447565b613ec7613ee282614422565b613ec7613ee282614447565b6000613f0a826143e0565b613f148185610cf0565b9350613f24818560208601614494565b9290920192915050565b6000613f39826143e0565b613f4381856143e4565b9350613f53818560208601614494565b613f5c816144c0565b9093019392505050565b6000613f73601b836143e4565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613fac6021836143e4565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b8051608083019061400f848261406a565b506020820151610d8d6040850182614046565b805160408301906140338482613ebe565b506020820151610d8d6020850182614084565b805160408301906140578482613ecd565b506020820151610d8d602085018261407b565b805160408301906140338482613ecd565b613ec78161445d565b613ec781614447565b60006140998284613ef3565b50602001919050565b60006140ae8286613eff565b91506140ba8285613ee7565b6002820191506135298284613eff565b60006140d68289613eff565b91506140e28288613ee7565b6002820191506140f28287613eff565b91506140fe8286613ee7565b60028201915061410e8285613eff565b915061411a8284613ed6565b506001019695505050505050565b6000614134828b613eff565b9150614140828a613ee7565b6002820191506141508289613eff565b915061415c8288613ee7565b60028201915061416c8287613eff565b91506141788286613ee7565b6002820191506141888285613eff565b91506141948284613ed6565b5060010198975050505050505050565b602081016109b28284613ebe565b60208082528101610c7c8184613f2e565b60208082528101610ced81613f66565b60208082528101610ced81613f9f565b604081016109b28284614022565b602081016109b28284614084565b6040810161420d8285614084565b8181036020830152610ac78184613f2e565b610120810161422e8289614084565b61423b6020830188614022565b6142486060830187614084565b614255608083018661406a565b61426260c0830185614084565b61426f60e083018461406a565b979650505050505050565b6102008101614289828a614084565b6142966020830189614084565b6142a36040830188614084565b6142b06060830187614084565b6142bd6080830186613ffe565b6142cb610100830185613ffe565b6142d9610180830184613ffe565b98975050505050505050565b61028081016142f4828b614084565b614301602083018a614084565b61430e6040830189614084565b61431b6060830188614084565b6143286080830187613ffe565b614336610100830186613ffe565b614344610180830185613ffe565b611de2610200830184613ffe565b60405181810167ffffffffffffffff8111828210171561437157600080fd5b604052919050565b600067ffffffffffffffff82111561439057600080fd5b5060209081020190565b600067ffffffffffffffff8211156143b157600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b6000610ced82614472565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60005b838110156144af578181015183820152602001614497565b83811115610d8d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6144f1816143ed565b81146144fc57600080fd5b50565b6144f1816143f8565b600281106144fc57600080fd5b6144f181614447565b6144f18161444a565b6144f18161445d565b6144f18161448b56fea365627a7a72315820f2deda3f79066c5c4603969e72aa11d84148958bf63bdc689fcaf56a8fd9a6516c6578706572696d656e74616cf564736f6c63430005100040",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80637b846b6214610045578063b0909ea014610067575b600080fd5b81801561005157600080fd5b50610065610060366004613e3a565b610087565b005b81801561007357600080fd5b50610065610082366004613e3a565b6104e8565b610097833363ffffffff61086616565b600c830154604080517f7a5d20ea00000000000000000000000000000000000000000000000000000000815290516101849273ffffffffffffffffffffffffffffffffffffffff1691637a5d20ea916004808301926020929190829003018186803b15801561010557600080fd5b505afa158015610119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061013d9190810190613dad565b7f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f4c69717569646174696f6e73206172652064697361626c6564000000000000006108c6565b604081015161019a90849063ffffffff61097716565b60028111156101a557fe5b60011461023b576040810151610223906101c990859085600063ffffffff6109b816565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f556e6c6971756964617461626c65206163636f756e7400000000000000000000846040015160000151856040015160200151610acf565b604081015161023b908490600163ffffffff610b9a16565b61024361383a565b604082015160808301516102759190610262868263ffffffff610c0f16565b60a001518792919063ffffffff610c8316565b90506102d061028382610cd8565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f436f6c6c61746572616c2063616e6e6f74206265206e656761746976650000008560800151610cf5565b6102d8613851565b60608301516102ee90859063ffffffff610c0f16565b60a0015190506102fc613851565b608084015161031290869063ffffffff610c0f16565b60a00151905061032061383a565b61032861383a565b604086015160608701518751610349928b929091889063ffffffff610d9316565b91509150610355613871565b61035d613871565b6103768a8a8a604001518b608001518c60600151610f3f565b9150915061038261383a565b61038d848484610fd8565b90508760200151816020015111156103fd576103a888611015565b90506103b581848461103c565b93506103db89604001518a608001516103cc61106f565b8e92919063ffffffff61108f16565b604089015160608a01516103f8918d918a8863ffffffff61156d16565b610436565b604089015160608a0151610419918d918863ffffffff61108f16565b604089015160808a0151610436918d91898563ffffffff61156d16565b61045d89602001518a606001518961044d88611015565b8f9392919063ffffffff61156d16565b61047489602001518a608001518861044d85611015565b60008b60070160060154905061049f8a604001518b602001518c60800151858e606001518a876115e6565b6104ce8a602001518b604001518c608001516104ba86611015565b8e606001516104c88b611015565b876115e6565b6104da8c8b8488611851565b505050505050505050505050565b60208101516104ff9084903363ffffffff61197916565b604081015161051590849063ffffffff61097716565b600281111561052057fe5b6002146105b0576040810151610598906105429085908563ffffffff611a2c16565b604083015180516020909101517f4c69717569646174654f725661706f72697a65496d706c000000000000000000917f556e7661706f72697a61626c65206163636f756e74000000000000000000000091610acf565b60408101516105b0908490600263ffffffff610b9a16565b60006105ba61383a565b6105df85846105d6866060015188610c0f90919063ffffffff16565b60a00151611ab4565b91509150811561060b5761060485846105f661106f565b6105fe61106f565b85611b97565b5050610861565b61061361383a565b608084015161062990879063ffffffff611c9416565b905061068461063782610cd8565b157f4c69717569646174654f725661706f72697a65496d706c0000000000000000007f4578636573732063616e6e6f74206265206e65676174697665000000000000008760800151610cf5565b61068c61383a565b61069461383a565b604086015160608701516106c991906106b38a8263ffffffff610c0f16565b60a0015189518c9392919063ffffffff610d9316565b915091506106d5613871565b6106dd613871565b61071e8a8a6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152508b608001518c60600151610f3f565b9150915061072a61383a565b610735848484610fd8565b90508560200151816020015111156107975761075086611015565b905061075d81848461103c565b60408a015160608b01519195506107929161077e8d8263ffffffff610c0f16565b60a001518e9291908863ffffffff61156d16565b6107b3565b604089015160608a01516107b3918d918863ffffffff61108f16565b602089015160608a01516107df91906107d28d8263ffffffff610c0f16565b60a0015161044d88611015565b602089015160808a015161080b91906107fe8d8263ffffffff610c0f16565b60a0015161044d85611015565b600d8b015460408a015160208b015160808c015161083992919061082d61106f565b8e606001518a876115e6565b6108548a602001518b604001518c608001516104ba86611015565b6104da8c8b84888c611b97565b505050565b6000610878838363ffffffff611def16565b9050610861817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e656420676c6f62616c206f70657261746f72000085611e1e565b82610861576108d482611e80565b7f3a200000000000000000000000000000000000000000000000000000000000006108fe83611e80565b604051602001610910939291906140a2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261096e916004016141b2565b60405180910390fd5b805173ffffffffffffffffffffffffffffffffffffffff166000908152600383016020908152604080832082850151845290915290205460ff165b92915050565b60006109ca858563ffffffff611f5816565b6109d657506001610ac7565b6109de613871565b6109e88686611f9f565b5090506109f3613871565b6109fb613871565b610a0f88888860018763ffffffff61212e16565b915091508415610a7957600a8801548151885160208a0151610a799390921015917f53746f7261676500000000000000000000000000000000000000000000000000917f426f72726f772076616c756520746f6f206c6f7700000000000000000000000091610acf565b8251610a945760408051602081019091526007890154815292505b6000610aa48260000151856122b6565b8251909150610ab9908263ffffffff6122cf16565b836000015110159450505050505b949350505050565b84610b9357610add84611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000610b0785611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610b318661230e565b7f2c20000000000000000000000000000000000000000000000000000000000000610b5b87612485565b60405161091097969594939291907f3e0000000000000000000000000000000000000000000000000000000000000090602001614128565b5050505050565b815173ffffffffffffffffffffffffffffffffffffffff1660009081526003840160209081526040808320828601518452909152902080548291907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610c0557fe5b0217905550505050565b610c17613884565b825151610c679015157f43616368650000000000000000000000000000000000000000000000000000007f6e6f7420696e697469616c697a656400000000000000000000000000000000006108c6565b610c7c83600001516000856060015185612594565b9392505050565b610c8b61383a565b610c9361383a565b610ca486868663ffffffff61264f16565b9050610caf816126cf565b15610cc457610cbc61106f565b915050610ac7565b610cce81846126e9565b9695505050505050565b8051600090158015610ced5750602082015115155b90505b919050565b83610d8d57610d0383611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000610d2d84611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610d5785612485565b6040516109109594939291907f3e00000000000000000000000000000000000000000000000000000000000000906020016140ca565b50505050565b610d9b61383a565b610da361383a565b610dab61383a565b610dbc88888863ffffffff61264f16565b9050610e1c610dca8261279e565b157f53746f72616765000000000000000000000000000000000000000000000000007f4f7765642062616c616e63652063616e6e6f7420626520706f736974697665008a600001518b60200151610acf565b610e2461383a565b610e2c61383a565b610e3f8a8a8a8a8a63ffffffff6127c616565b91509150610e4c8261279e565b15610e7857610e5961106f565b9150610e75610e708b8b8b8b63ffffffff610c8316565b611015565b90505b610f0e610e8482610cd8565b158015610ebd575082602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610155b7f53746f72616765000000000000000000000000000000000000000000000000007f4f7765642062616c616e63652063616e6e6f7420696e637265617365000000008c600001518d60200151610acf565b610f1e838363ffffffff61295416565b15610f2e57610f2b61106f565b90505b9093509150505b9550959350505050565b610f47613871565b610f4f613871565b6000610f61878563ffffffff610c0f16565b60c00151519050610f70613871565b610f828988888863ffffffff6129c616565b9050610f8c613871565b6040518060200160405280610fb1610fa486866122b6565b869063ffffffff6122cf16565b90529050610fc5898863ffffffff610c0f16565b60c001519a909950975050505050505050565b610fe061383a565b604051806040016040528060001515815260200161100b866020015185600001518760000151612a84565b9052949350505050565b61101d61383a565b5060408051808201909152815115815260208083015190820152919050565b61104461383a565b604051806040016040528060011515815260200161100b866020015186600001518660000151612aa6565b61107761383a565b50604080518082019091526000808252602082015290565b61109761383a565b6110a885858563ffffffff61264f16565b90506110b48183612954565b156110bf5750610d8d565b6110c761383a565b6110d7868563ffffffff612aff16565b8251909150156111445761112861112383602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff16612b5f90919063ffffffff16565b612ba1565b6fffffffffffffffffffffffffffffffff166020820152611189565b6020820151815161117491611123916fffffffffffffffffffffffffffffffff908116911663ffffffff612b5f16565b6fffffffffffffffffffffffffffffffff1681525b8251156111ee576111d261112384602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff166122cf90919063ffffffff16565b6fffffffffffffffffffffffffffffffff166020820152611233565b6020830151815161121e91611123916fffffffffffffffffffffffffffffffff908116911663ffffffff6122cf16565b6fffffffffffffffffffffffffffffffff1681525b61123c82612c04565b801561124c575061124c83612c2e565b156112e957845173ffffffffffffffffffffffffffffffffffffffff1660009081526003870160209081526040808320828901518452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff63ffffffff61010080840482169290920116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff90911617905561137b565b6112f282612c2e565b8015611302575061130283612c04565b1561137b57845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020805463ffffffff6101008083048216600101909116027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091161790555b611384836126cf565b80156113965750611394826126cf565b155b156113ea57845173ffffffffffffffffffffffffffffffffffffffff166000908152600387016020908152604080832082890151845290915290206113e4906001018563ffffffff612c4416565b50611454565b6113f3836126cf565b1580156114045750611404826126cf565b1561145457845173ffffffffffffffffffffffffffffffffffffffff16600090815260038701602090815260408083208289015184529091529020611452906001018563ffffffff612d2a16565b505b6000848152600180880160209081526040808420855193018054958301516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029481167fffffffffffffffffffffffffffffffff0000000000000000000000000000000090971696909617861693909317909255875173ffffffffffffffffffffffffffffffffffffffff1683526003808a018252828420898301518552825282842088855201815291208451815492860151909316610100027fffffffffffffffffffffffffffffff00000000000000000000000000000000ff9315157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090931692909217929092161790555050505050565b61157681612d74565b1561158057610b93565b61158861383a565b61159a8686868663ffffffff610c8316565b90506115a461383a565b6115b4828463ffffffff612d7c16565b90506115be61383a565b6115c88286612e0e565b90506115dc8888888463ffffffff61108f16565b5050505050505050565b8015801590611611575086516116119073ffffffffffffffffffffffffffffffffffffffff16612ed5565b15611848576101006000606061171061162a5a86612f0e565b60208c015160405186917fdcd3f52e000000000000000000000000000000000000000000000000000000009161166d91908f908f908f908f908f9060240161421f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091528d5173ffffffffffffffffffffffffffffffffffffffff1692919063ffffffff612f2416565b91509150811561177557896000015173ffffffffffffffffffffffffffffffffffffffff167fdf30e54991e6c9ca0d354a3eec6c41160a3957d6a6a1e045b61cb4fa78a881588b6020015160405161176891906141f1565b60405180910390a2611844565b60448151101561179457506040805160208101909152600081526117eb565b60448101516004909101907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc84018111156117d3576044840360408301525b818060200190516117e79190810190613dcb565b9150505b896000015173ffffffffffffffffffffffffffffffffffffffff167f80286932449c34f135af231b834d24382a883e1ae7e17796d9f842ffec060bc28b602001518360405161183b9291906141ff565b60405180910390a25b5050505b50505050505050565b6118596138cd565b611875858560200151866080015161187087611015565b612f97565b905061187f6138cd565b611896868660200151876060015161187087611015565b90506118a06138cd565b6118b4878760400151886080015188612f97565b90506118be6138cd565b6118d2888860400151896060015188612f97565b905086604001516000015173ffffffffffffffffffffffffffffffffffffffff1687602001516000015173ffffffffffffffffffffffffffffffffffffffff167f1b9e65b359b871d74b1af1fc8b13b11635bfb097c4631b091eb762fda7e67dc78960200151602001518a60400151602001518b608001518c606001518a8a8a8a6040516119679897969594939291906142e5565b60405180910390a35050505050505050565b6000826000015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806119c457506119c4848363ffffffff611def16565b806119de575082516119de9085908463ffffffff612fcc16565b9050610d8d817f53746f72616765000000000000000000000000000000000000000000000000007f556e7065726d697373696f6e6564206f70657261746f7200000000000000000085611e1e565b60008080611a3984613009565b905060005b81811015611aa957611a4e61383a565b611a7187611a62888563ffffffff61300e16565b518a919063ffffffff61264f16565b9050611a7c816126cf565b15611a875750611aa1565b805115611a9b576000945050505050610c7c565b60019350505b600101611a3e565b509095945050505050565b6000611abe61383a565b611ac661383a565b6060850151611adc90879063ffffffff611c9416565b9050611ae78161308a565b611aff576000611af561106f565b9250925050611b8f565b611b0761383a565b60408601516060870151611b239189918863ffffffff610c8316565b600181526020808201519084015191925011611b6a57611b5d86604001518760600151611b4e61106f565b8a92919063ffffffff61108f16565b600193509150611b8f9050565b60408601516060870151611b87918991888663ffffffff61156d16565b506000925090505b935093915050565b611b9f6138cd565b611bb6868660200151876080015161187088611015565b9050611bc06138cd565b611bd7878760200151886060015161187088611015565b9050611be16138cd565b60408701516060880151611c01918a91611870898963ffffffff612d7c16565b905086604001516000015173ffffffffffffffffffffffffffffffffffffffff1687602001516000015173ffffffffffffffffffffffffffffffffffffffff167fefdcfda4e0be180f29bfeebc4bcb6de1e950d70b41e9ee813bff9882ee16ca918960200151602001518a60400151602001518b608001518c60600151898989604051611967979695949392919061427a565b611c9c61383a565b611ca4613851565b611cb4848463ffffffff6130a016565b9050611cbe61383a565b611cce858563ffffffff612aff16565b90506000611ce2868663ffffffff61312c16565b9050611cec61383a565b6040805180820182526001815290517f70a08231000000000000000000000000000000000000000000000000000000008152602082019073ffffffffffffffffffffffffffffffffffffffff8516906370a0823190611d4f9030906004016141a4565b60206040518083038186803b158015611d6757600080fd5b505afa158015611d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611d9f9190810190613ea0565b90529050611dab61383a565b611db361383a565b611dbd8587613158565b9092509050611de282611dd6858463ffffffff61320016565b9063ffffffff61320016565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff166000908152600591909101602052604090205460011490565b83610d8d57611e2c83611e80565b7f3a20000000000000000000000000000000000000000000000000000000000000611e5684611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610d578561230e565b60608082604051602001611e94919061408d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052905060205b8015611f3d5781517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90910190829082908110611f0057fe5b01602001517fff000000000000000000000000000000000000000000000000000000000000001615611f385760010181529050610cf0565b611ec7565b5060408051600080825260208201909252905b509392505050565b805173ffffffffffffffffffffffffffffffffffffffff16600090815260039290920160209081526040808420928201518452919052902054610100900463ffffffff1690565b611fa7613871565b611faf613871565b825173ffffffffffffffffffffffffffffffffffffffff9081166000908152600f86016020526040902054168015612098576040517fca23542000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ca235420906120339087906004016141e3565b604080518083038186803b15801561204a57600080fd5b505afa15801561205e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506120829190810190613e00565b909350915061209285848461321a565b50612127565b50600e84015473ffffffffffffffffffffffffffffffffffffffff16801561210c576040517fca23542000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ca235420906120339087906004016141e3565b6121146133a5565b925061211e6133a5565b91506121279050565b9250929050565b612136613871565b61213e613871565b612146613871565b61214e613871565b85801561215a57508451155b9550600061216788613009565b905060005b818110156122a65761217c61383a565b6121b48b6121908c8563ffffffff61300e16565b516121a18d8663ffffffff61300e16565b60a001518f92919063ffffffff610c8316565b90506121bf81612d74565b156121ca575061229e565b6121d2613871565b6121da6133c0565b905089156122255761222260018e0160006121fb8e8763ffffffff61300e16565b518152602080820192909252604090810160002081519283019091526005015481526133e2565b90505b600061225061223a8d8663ffffffff61300e16565b60c001515160208501519063ffffffff61341916565b83519091501561227c57612275612267828461346d565b88519063ffffffff6122cf16565b875261229a565b61229761228982846122b6565b87519063ffffffff6122cf16565b86525b5050505b60010161216c565b5091999098509650505050505050565b6000610c7c838360000151670de0b6b3a7640000612a84565b600082820183811015610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906141c3565b60408051602a808252606082810190935273ffffffffffffffffffffffffffffffffffffffff8416918391602082018180388339019050509050603060f81b8160008151811061235a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350607860f81b8160018151811061239b57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060005b6014811015611f5057600281026123e6600f8516613486565b8382602903815181106123f557fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600484901c9350612437600f8516613486565b83826028038151811061244657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053505060049290921c916001016123cd565b6060816124c6575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610cf0565b8160005b81156124de57600101600a820491506124ca565b6060816040519080825280601f01601f19166020018201604052801561250b576020820181803883390190505b508593509050815b801561258b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600a840660300160f81b82828151811061255157fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350612513565b50949350505050565b61259c613884565b8383038015806125ce57508060011480156125ce5750828686815181106125bf57fe5b60200260200101516000015114155b156125d557fe5b6000600182901c8601905060008782815181106125ee57fe5b60200260200101516000015190508085101561261a5761261088888488612594565b9350505050610ac7565b808511156126315761261088836001018888612594565b87828151811061263d57fe5b60200260200101519350505050610ac7565b61265761383a565b50815173ffffffffffffffffffffffffffffffffffffffff1660009081526003938401602090815260408083209482015183529381528382209282529190930181529181902081518083019092525460ff81161515825261010090046fffffffffffffffffffffffffffffffff169181019190915290565b602001516fffffffffffffffffffffffffffffffff161590565b6126f161383a565b602083015183516fffffffffffffffffffffffffffffffff909116901561275f576040805180820190915260018152602084810151908201906127549084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134a816565b8152509150506109b2565b6040805180820190915260008152835160208201906127549084906dffffffffffffffffffffffffffff16670de0b6b3a764000063ffffffff6134a816565b80516000908015610ced575050602001516fffffffffffffffffffffffffffffffff16151590565b6127ce61383a565b6127d661383a565b6127de61383a565b6127ef88888863ffffffff61264f16565b905083606001516000148015612814575060008460400151600181111561281257fe5b145b1561282c578061282261106f565b9250925050610f35565b61283461383a565b61283e82876126e9565b905061284861383a565b61285061383a565b60008760200151600181111561286257fe5b14156128ce5750604080518082019091528651151581526060870151602082015260018760400151600181111561289557fe5b14156128ae576128ab818463ffffffff61320016565b90505b6128c76128c1848363ffffffff612d7c16565b89612e0e565b9150612944565b60405180604001604052808860000151151581526020016128f28960600151612ba1565b6fffffffffffffffffffffffffffffffff169052915060008760400151600181111561291a57fe5b141561293357612930848363ffffffff61353216565b91505b61294183611dd6848b6126e9565b90505b909a909950975050505050505050565b600081602001516fffffffffffffffffffffffffffffffff1683602001516fffffffffffffffffffffffffffffffff1614156129bd5760208301516fffffffffffffffffffffffffffffffff166129ad575060016109b2565b50805182511515901515146109b2565b50600092915050565b6129ce613871565b6129d6613871565b6129e08686611f9f565b80519092501590506129f3579050610ac7565b6008860154600085815260018801602090815260409182902082519182019092526006909101548152612a30908290612a2b906133e2565b6122b6565b9050612a6b81612a2b8960010160008881526020019081526020016000206006016040518060200160405290816000820154815250506133e2565b6040805160208101909152908152979650505050505050565b6000610ac782612a9a868663ffffffff61341916565b9063ffffffff61365716565b6000831580612ab3575082155b15612aca57612ac3600083613657565b9050610c7c565b610ac76001612af384612a9a83612ae78a8a63ffffffff61341916565b9063ffffffff612b5f16565b9063ffffffff6122cf16565b612b0761383a565b506000818152600180840160209081526040928390208351808501909452909101546fffffffffffffffffffffffffffffffff8082168452700100000000000000000000000000000000909104169082015292915050565b6000610c7c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613699565b600081610ced6fffffffffffffffffffffffffffffffff821682147f4d617468000000000000000000000000000000000000000000000000000000007f556e73616665206361737420746f2075696e743132380000000000000000000084610cf5565b600081602001516fffffffffffffffffffffffffffffffff16600014158015610ced575050511590565b6000612c39826126cf565b80610ced5750505190565b60008181526001830160205260408120548015612d205783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019101808214612cda576000866000018281548110612c9b57fe5b9060005260206000200154905080876000018481548110612cb857fe5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ce557fe5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109b2565b60009150506109b2565b6000612d3683836136df565b612d6c575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109b2565b5060006109b2565b602001511590565b612d8461383a565b612d8c61383a565b8251845115159015151415612dbf5783511515815260208085015190840151612db591906122cf565b6020820152610c7c565b8260200151846020015110612de85783511515815260208085015190840151612db59190612b5f565b82511515815260208084015190850151612e029190612b5f565b60208201529392505050565b612e1661383a565b825115612e8e576040518060400160405280600115158152602001612e73611123670de0b6b3a764000067ffffffffffffffff1686602001516dffffffffffffffffffffffffffff1688602001516134a89092919063ffffffff16565b6fffffffffffffffffffffffffffffffff16905290506109b2565b6040805180820190915260008152825160208581015190830191612e739161112391670de0b6b3a7640000906dffffffffffffffffffffffffffff1663ffffffff6134a816565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610ac7575050151592915050565b6000818310612f1d5781610c7c565b5090919050565b6000606060008060608661ffff166040519080825280601f01601f191660200182016040528015612f5c576020820181803883390190505b50905060008087516020890160008d8df191503d925086831115612f7e578692505b828152826000602083013e909890975095505050505050565b612f9f6138cd565b6040805180820190915282815260208101612fc187878763ffffffff61264f16565b905295945050505050565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600493909301602090815260408085209290931684525290205460011490565b515190565b613016613884565b82515161306c90808410907f4361636865000000000000000000000000000000000000000000000000000000907f696e76616c696420696e646578000000000000000000000000000000000000009086906136f7565b825180518390811061307a57fe5b6020026020010151905092915050565b80516000908015610ced57505060200151151590565b6130a8613851565b506000908152600191909101602090815260409182902082516060810184526002909101546dffffffffffffffffffffffffffff80821683526e010000000000000000000000000000820416928201929092527c010000000000000000000000000000000000000000000000000000000090910463ffffffff169181019190915290565b6000908152600191909101602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b61316061383a565b61316861383a565b61317061383a565b5060408051808201909152600181526020858101516fffffffffffffffffffffffffffffffff16908201526131a361383a565b50604080518082019091526000815285516fffffffffffffffffffffffffffffffff1660208201526131d361383a565b6131dd83876126e9565b90506131e761383a565b6131f183886126e9565b91989197509095505050505050565b61320861383a565b610c7c8361321584611015565b612d7c565b601083015482516132789167ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f526174696f20746f6f20686967680000000000000000000000000000000000006108c6565b601083015481516132e29168010000000000000000900467ffffffffffffffff1610157f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420746f6f206869676800000000000000000000000000000000006108c6565b8151158015906132f25750805115155b1561334c578151815161334791117f53746f72616765000000000000000000000000000000000000000000000000007f5370726561642063616e6e6f74206265203e3d20726174696f000000000000006108c6565b610861565b80516108619015801561335e57508251155b7f53746f72616765000000000000000000000000000000000000000000000000007f53707265616420616e6420726174696f206d75737420626f74682062652030006108c6565b6133ad613871565b5060408051602081019091526000815290565b6133c8613871565b506040805160208101909152670de0b6b3a7640000815290565b6133ea613871565b60408051602081019091528251819061341190670de0b6b3a764000063ffffffff6122cf16565b905292915050565b600082613428575060006109b2565b8282028284828161343557fe5b0414610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e906141d3565b6000610c7c83670de0b6b3a76400008460000151612a84565b6000600a82101561349e57506030810160f81b610cf0565b5060570160f81b90565b60008315806134b5575082155b156134c557612ac3600083613657565b60006134d7858563ffffffff61341916565b90506135296134f66001612af36002612a9a888463ffffffff612b5f16565b613506838663ffffffff61375916565b1015613513576000613516565b60015b60ff16612af3838663ffffffff61365716565b95945050505050565b61353a61383a565b61354261383a565b82518451151590151514156135a0578351151581526020808501519084015161358491611123916fffffffffffffffffffffffffffffffff91821691166122cf565b6fffffffffffffffffffffffffffffffff166020820152610c7c565b82602001516fffffffffffffffffffffffffffffffff1684602001516fffffffffffffffffffffffffffffffff1610613606578351151581526020808501519084015161358491611123916fffffffffffffffffffffffffffffffff9182169116612b5f565b8251151581526020808401519085015161363991611123916fffffffffffffffffffffffffffffffff9182169116612b5f565b6fffffffffffffffffffffffffffffffff1660208201529392505050565b6000610c7c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061379b565b600081848411156136d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b505050900390565b60009081526001919091016020526040902054151590565b84610b935761370584611e80565b7f3a2000000000000000000000000000000000000000000000000000000000000061372f85611e80565b7f203c000000000000000000000000000000000000000000000000000000000000610b3186612485565b6000610c7c83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506137ec565b600081836137d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b5060008385816137e257fe5b0495945050505050565b60008183613827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e91906141b2565b5082848161383157fe5b06949350505050565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b6040518060200160405280600081525090565b6040805160e08101825260008082526020820181905291810182905260608101829052608081019190915260a081016138bb613851565b81526020016138c8613871565b905290565b60405180604001604052806138e061383a565b81526020016138c861383a565b80356109b2816144e8565b600082601f83011261390957600080fd5b813561391c61391782614379565b614352565b915081818352602084019350602081019050838561012084028201111561394257600080fd5b60005b8381101561397157816139588882613ca3565b8452506020909201916101209190910190600101613945565b5050505092915050565b600082601f83011261398c57600080fd5b813561399a61391782614379565b915081818352602084019350602081019050838560208402820111156139bf57600080fd5b60005b8381101561397157816139d58882613d76565b84525060209283019291909101906001016139c2565b80356109b2816144ff565b80516109b2816144ff565b80356109b281614508565b600082601f830112613a1d57600080fd5b8151613a2b6139178261439a565b91508082526020830160208301858383011115613a4757600080fd5b613a52838284614494565b50505092915050565b600060808284031215613a6d57600080fd5b613a776080614352565b90506000613a8584846139eb565b8252506020613a9684848301613a01565b6020830152506040613aaa84828501613a01565b6040830152506060613abe84828501613d76565b60608301525092915050565b600060208284031215613adc57600080fd5b613ae66020614352565b90506000613af48484613d97565b82525092915050565b600060608284031215613b0f57600080fd5b613b196060614352565b90506000613b278484613d81565b8252506020613b3884848301613d81565b6020830152506040613b4c84828501613da2565b60408301525092915050565b600060408284031215613b6a57600080fd5b613b746040614352565b90506000613b8284846138ed565b8252506020613b9384848301613d76565b60208301525092915050565b60006101408284031215613bb257600080fd5b613bbc60a0614352565b90506000613bca8484613a5b565b8252506080613bdb84848301613b58565b60208301525060c0613bef84828501613b58565b604083015250610100613c0484828501613d76565b606083015250610120613c1984828501613d76565b60808301525092915050565b600060808284031215613c3757600080fd5b613c416080614352565b9050813567ffffffffffffffff811115613c5a57600080fd5b613c66848285016138f8565b8252506020613c7784848301613d76565b602083015250604082013567ffffffffffffffff811115613c9757600080fd5b613aaa8482850161397b565b60006101208284031215613cb657600080fd5b613cc060e0614352565b90506000613cce8484613d76565b8252506020613cdf848483016138ed565b6020830152506040613cf3848285016139eb565b6040830152506060613d0784828501613d8c565b6060830152506080613d1b84828501613d8c565b60808301525060a0613d2f84828501613afd565b60a083015250610100613d4484828501613d50565b60c08301525092915050565b600060208284031215613d6257600080fd5b613d6c6020614352565b90506000613af484845b80356109b281614515565b80356109b28161451e565b80356109b281614527565b80516109b281614515565b80356109b281614530565b600060208284031215613dbf57600080fd5b6000610ac784846139f6565b600060208284031215613ddd57600080fd5b815167ffffffffffffffff811115613df457600080fd5b610ac784828501613a0c565b60008060408385031215613e1357600080fd5b6000613e1f8585613aca565b9250506020613e3085828601613aca565b9150509250929050565b60008060006101808486031215613e5057600080fd5b6000613e5c8686613d76565b935050602084013567ffffffffffffffff811115613e7957600080fd5b613e8586828701613c25565b9250506040613e9686828701613b9f565b9150509250925092565b600060208284031215613eb257600080fd5b6000610ac78484613d97565b613ec7816143ed565b82525050565b613ec7816143f8565b613ec7613ee2826143fd565b614447565b613ec7613ee282614422565b613ec7613ee282614447565b6000613f0a826143e0565b613f148185610cf0565b9350613f24818560208601614494565b9290920192915050565b6000613f39826143e0565b613f4381856143e4565b9350613f53818560208601614494565b613f5c816144c0565b9093019392505050565b6000613f73601b836143e4565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000815260200192915050565b6000613fac6021836143e4565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f81527f7700000000000000000000000000000000000000000000000000000000000000602082015260400192915050565b8051608083019061400f848261406a565b506020820151610d8d6040850182614046565b805160408301906140338482613ebe565b506020820151610d8d6020850182614084565b805160408301906140578482613ecd565b506020820151610d8d602085018261407b565b805160408301906140338482613ecd565b613ec78161445d565b613ec781614447565b60006140998284613ef3565b50602001919050565b60006140ae8286613eff565b91506140ba8285613ee7565b6002820191506135298284613eff565b60006140d68289613eff565b91506140e28288613ee7565b6002820191506140f28287613eff565b91506140fe8286613ee7565b60028201915061410e8285613eff565b915061411a8284613ed6565b506001019695505050505050565b6000614134828b613eff565b9150614140828a613ee7565b6002820191506141508289613eff565b915061415c8288613ee7565b60028201915061416c8287613eff565b91506141788286613ee7565b6002820191506141888285613eff565b91506141948284613ed6565b5060010198975050505050505050565b602081016109b28284613ebe565b60208082528101610c7c8184613f2e565b60208082528101610ced81613f66565b60208082528101610ced81613f9f565b604081016109b28284614022565b602081016109b28284614084565b6040810161420d8285614084565b8181036020830152610ac78184613f2e565b610120810161422e8289614084565b61423b6020830188614022565b6142486060830187614084565b614255608083018661406a565b61426260c0830185614084565b61426f60e083018461406a565b979650505050505050565b6102008101614289828a614084565b6142966020830189614084565b6142a36040830188614084565b6142b06060830187614084565b6142bd6080830186613ffe565b6142cb610100830185613ffe565b6142d9610180830184613ffe565b98975050505050505050565b61028081016142f4828b614084565b614301602083018a614084565b61430e6040830189614084565b61431b6060830188614084565b6143286080830187613ffe565b614336610100830186613ffe565b614344610180830185613ffe565b611de2610200830184613ffe565b60405181810167ffffffffffffffff8111828210171561437157600080fd5b604052919050565b600067ffffffffffffffff82111561439057600080fd5b5060209081020190565b600067ffffffffffffffff8211156143b157600080fd5b506020601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160190565b5190565b90815260200190565b6000610ced82614472565b151590565b7fff000000000000000000000000000000000000000000000000000000000000001690565b7fffff0000000000000000000000000000000000000000000000000000000000001690565b90565b6dffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60005b838110156144af578181015183820152602001614497565b83811115610d8d5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6144f1816143ed565b81146144fc57600080fd5b50565b6144f1816143f8565b600281106144fc57600080fd5b6144f181614447565b6144f18161444a565b6144f18161445d565b6144f18161448b56fea365627a7a72315820f2deda3f79066c5c4603969e72aa11d84148958bf63bdc689fcaf56a8fd9a6516c6578706572696d656e74616cf564736f6c63430005100040",
  "sourceMap": "1564:12075:72:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "1564:12075:72:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1933:3985;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1933:3985:72;;;;;;;;:::i;:::-;;5924:4084;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5924:4084:72;;;;;;;;:::i;1933:3985::-;2103:41;:5;2133:10;2103:41;:29;:41;:::i;:::-;2180:31;;;;:54;;;;;;;;2154:149;;2180:31;;;:52;;:54;;;;;;;;;;;;;;:31;:54;;;5:2:-1;;;;30:1;27;20:12;5:2;2180:54:72;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2180:54:72;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;2180:54:72;;;;;;;;;2248:4;2154:149;:12;:149::i;:::-;2390:18;;;;2374:35;;:5;;:35;:15;:35;:::i;:::-;2349:60;;;;;;;;:21;:60;2345:438;;2479:18;;;;2425:275;;2456:81;;:5;;2499;2531;2456:81;:22;:81;:::i;:::-;2455:82;2555:4;2425:275;2619:4;:18;;;:24;;;2661:4;:18;;;:25;;;2425:12;:275::i;:::-;2730:18;;;;2714:58;;:5;;2750:21;2714:58;:15;:58;:::i;:::-;2793:27;;:::i;:::-;2849:18;;;;2881:15;;;;2823:129;;2849:18;2910:26;:5;2881:15;2910:26;:9;:26;:::i;:::-;:32;;;2823:5;;:129;;;:12;:129;:::i;:::-;2793:159;;2963:152;2990:23;:10;:21;:23::i;:::-;2989:24;3027:4;2963:152;3090:4;:15;;;2963:12;:152::i;:::-;3126:31;;:::i;:::-;3170:15;;;;3160:26;;:5;;:26;:9;:26;:::i;:::-;:32;;;3126:66;;3202:31;;:::i;:::-;3246:15;;;;3236:26;;:5;;:26;:9;:26;:::i;:::-;:32;;;3202:66;;3292:24;;:::i;:::-;3330;;:::i;:::-;3421:18;;;;3453:15;;;;3505:11;;3367:159;;:5;;3421:18;;3482:9;;3367:159;:40;:159;:::i;:::-;3278:248;;;;3551:31;;:::i;:::-;3596:34;;:::i;:::-;3643:159;3678:5;3697;3716:4;:18;;;3748:4;:15;;;3777:4;:15;;;3643:21;:159::i;:::-;3537:265;;;;3813:24;;:::i;:::-;3840:51;3858:7;3867:9;3878:12;3840:17;:51::i;:::-;3813:78;;4002:10;:16;;;3986:7;:13;;;:32;3982:809;;;4044:21;:10;:19;:21::i;:::-;4034:31;;4089:51;4107:7;4116:9;4127:12;4089:17;:51::i;:::-;4079:61;;4155:128;4185:4;:18;;;4221:4;:15;;;4254;:13;:15::i;:::-;4155:5;;:128;;;:12;:128;:::i;:::-;4339:18;;;;4375:15;;;;4297:159;;:5;;4408:9;4435:7;4297:159;:24;:159;:::i;:::-;3982:809;;;4517:18;;;;4553:15;;;;4487:120;;:5;;4586:7;4487:120;:12;:120;:::i;:::-;4663:18;;;;4699:15;;;;4621:159;;:5;;4732:9;4759:7;4621:159;:24;:159;:::i;:::-;4851:149;4889:4;:17;;;4920:4;:15;;;4949:9;4972:18;:7;:16;:18::i;:::-;4851:5;;:149;;;;:24;:149;:::i;:::-;5010;5048:4;:17;;;5079:4;:15;;;5108:9;5131:18;:7;:16;:18::i;5010:149::-;5170:24;5197:5;:16;;:33;;;5170:60;;5240:260;5311:4;:18;;;5343:4;:17;;;5374:4;:15;;;5403:7;5424:4;:15;;;5453:7;5474:16;5240:57;:260::i;:::-;5510:282;5581:4;:17;;;5612:4;:18;;;5644:4;:15;;;5673:18;:7;:16;:18::i;:::-;5705:4;:15;;;5734:18;:7;:16;:18::i;:::-;5766:16;5510:57;:282::i;:::-;5803:108;5836:5;5855:4;5873:7;5894;5803:19;:108::i;:::-;1933:3985;;;;;;;;;;;;:::o;5924:4084::-;6116:17;;;;6092:54;;:5;;6135:10;6092:54;:23;:54;:::i;:::-;6231:17;;;;6215:34;;:5;;:34;:15;:34;:::i;:::-;6191:58;;;;;;;;:20;:58;6187:394;;6315:17;;;;6265:235;;6295:45;;:5;;6334;6295:45;:19;:45;:::i;:::-;6421:17;;;;:23;;6462:24;;;;;6358:4;;6265:235;;:12;:235::i;:::-;6530:17;;;;6514:56;;:5;;6549:20;6514:56;:15;:56;:::i;:::-;6775:16;6805:26;;:::i;:::-;6844:67;6865:5;6872:4;6878:26;6888:4;:15;;;6878:5;:9;;:26;;;;:::i;:::-;:32;;;6844:20;:67::i;:::-;6761:150;;;;6925:11;6921:232;;;6952:170;6988:5;7011:4;7033:15;:13;:15::i;:::-;7066;:13;:15::i;:::-;7099:9;6952:18;:170::i;:::-;7136:7;;;;6921:232;7163:27;;:::i;:::-;7218:15;;;;7193:41;;:5;;:41;:24;:41;:::i;:::-;7163:71;;7245:148;7272:23;:10;:21;:23::i;:::-;7271:24;7309:4;7245:148;7368:4;:15;;;7245:12;:148::i;:::-;7418:24;;:::i;:::-;7456;;:::i;:::-;7547:17;;;;7578:15;;;;7493:181;;7547:17;7607:26;:5;7578:15;7607:26;:9;:26;:::i;:::-;:32;;;7653:11;;7493:5;;:181;;7607:32;7493:181;:40;:181;:::i;:::-;7404:270;;;;7795:31;;:::i;:::-;7840:34;;:::i;:::-;7887:225;7922:5;7941;7982:27;;;;;;;;8003:1;7982:27;;;;;;8007:1;7982:27;;;8058:4;:15;;;8087:4;:15;;;7887:21;:225::i;:::-;7781:331;;;;8123:24;;:::i;:::-;8150:51;8168:7;8177:9;8188:12;8150:17;:51::i;:::-;8123:78;;8312:10;:16;;;8296:7;:13;;;:32;8292:515;;;8354:21;:10;:19;:21::i;:::-;8344:31;;8399:51;8417:7;8426:9;8437:12;8399:17;:51::i;:::-;8507:17;;;;8542:15;;;;8389:61;;-1:-1:-1;8465:181:72;;8575:26;:5;8542:15;8575:26;:9;:26;:::i;:::-;:32;;;8465:5;;:181;;8625:7;8465:181;:24;:181;:::i;:::-;8292:515;;;8707:17;;;;8742:15;;;;8677:119;;:5;;8775:7;8677:119;:12;:119;:::i;:::-;8905:17;;;;8936:15;;;;8867:172;;8905:17;8965:26;:5;8936:15;8965:26;:9;:26;:::i;:::-;:32;;;9011:18;:7;:16;:18::i;8867:172::-;9087:17;;;;9118:15;;;;9049:172;;9087:17;9147:26;:5;9118:15;9147:26;:9;:26;:::i;:::-;:32;;;9193:18;:7;:16;:18::i;9049:172::-;9259:33;;;;9373:17;;;;9404;;;;9435:15;;;;9302:267;;9373:17;9404;9464:15;:13;:15::i;:::-;9493:4;:15;;;9522:7;9543:16;9302:57;:267::i;:::-;9579:281;9650:4;:17;;;9681:4;:17;;;9712:4;:15;;;9741:18;:7;:16;:18::i;9579:281::-;9871:130;9903:5;9922:4;9940:7;9961;9982:9;9871:18;:130::i;5924:4084::-;;;;:::o;20484:356:101:-;20630:20;20653:32;:5;20676:8;20653:32;:22;:32;:::i;:::-;20630:55;;20696:137;20722:15;20751:4;20696:137;20815:8;20696:12;:137::i;1294:426:99:-;1428:4;1423:291;;1542:24;1561:4;1542:18;:24::i;:::-;1592:5;1623:26;1642:6;1623:18;:26::i;:::-;1500:171;;;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;1500:171:99;;;;1448:255;;;;;;;;;;;;;;;;;11758:242:101;11956:13;;11941:29;;11904:14;11941:29;;;:14;;;:29;;;;;;;;11971:14;;;;11941:45;;;;;;;:52;;;11758:242;;;;;:::o;18359:1432::-;18583:4;18607:48;:5;18647:7;18607:48;:39;:48;:::i;:::-;18603:196;;-1:-1:-1;18784:4:101;18777:11;;18603:196;18905:31;;:::i;:::-;18941:38;18964:5;18971:7;18941:22;:38::i;:::-;18904:75;;;19003:33;;:::i;:::-;19050;;:::i;:::-;19096:142;:5;19132:7;19153:5;19199:4;19217:11;19096:142;:22;:142;:::i;:::-;18989:249;;;;19253:16;19249:276;;;19336:33;;;:39;19315:17;;19455:13;;19486:14;;;;19285:229;;19315:60;;;;;19393:4;;19285:229;;:12;:229::i;:::-;19539:17;;19535:95;;19577:42;;;;;;;;;19591:16;;;19577:42;;;;-1:-1:-1;19535:95:101;19640:22;19665:43;19677:11;:17;;;19696:11;19665;:43::i;:::-;19747:17;;19640:68;;-1:-1:-1;19747:37:101;;19640:68;19747:37;:21;:37;:::i;:::-;19726:11;:17;;;:58;;19719:65;;;;;;18359:1432;;;;;;;:::o;3529:663:99:-;3715:4;3710:476;;3829:24;3848:4;3829:18;:24::i;:::-;3879:5;3910:26;3929:6;3910:18;:26::i;:::-;3962:6;3994:19;4004:8;3994:9;:19::i;:::-;4039:5;4070:19;4080:8;4070:9;:19::i;:::-;3787:356;;;;;;;;;;;4115:6;;3787:356;;;;3710:476;3529:663;;;;;:::o;27913:229:101:-;28089:13;;28074:29;;;;;;:14;;;:29;;;;;;;;28104:14;;;;28074:45;;;;;;;:61;;28129:6;;28074:45;:61;;;28129:6;28074:61;;;;;;;;;;;;;27913:229;;;:::o;2403:412:90:-;2529:17;;:::i;:::-;2588:13;;:20;2562:110;;2588:25;;2627:4;2562:110;:12;:110::i;:::-;2689:119;2715:5;:13;;;2742:1;2757:5;:19;;;2790:8;2689:12;:119::i;:::-;2682:126;2403:412;-1:-1:-1;;;2403:412:90:o;12291:421:101:-;12497:16;;:::i;:::-;12529:20;;:::i;:::-;12552:31;:5;12565:7;12574:8;12552:31;:12;:31;:::i;:::-;12529:54;;12598:12;:3;:10;:12::i;:::-;12594:65;;;12633:15;:13;:15::i;:::-;12626:22;;;;;12594:65;12676:29;12694:3;12699:5;12676:17;:29::i;:::-;12669:36;12291:421;-1:-1:-1;;;;;;12291:421:101:o;5991:152:104:-;6114:6;;6086:4;;6113:7;:23;;;;-1:-1:-1;6124:7:104;;;;:12;;6113:23;6106:30;;5991:152;;;;:::o;1726:561:99:-;1886:4;1881:400;;2000:24;2019:4;2000:18;:24::i;:::-;2050:5;2081:26;2100:6;2081:18;:26::i;:::-;2133:6;2165:19;2175:8;2165:9;:19::i;:::-;1958:280;;;;;;;;;2210:6;;1958:280;;;;1881:400;1726:561;;;;:::o;24289:1455:101:-;24564:16;;:::i;:::-;24582;;:::i;:::-;24614:23;;:::i;:::-;24640:31;:5;24653:7;24662:8;24640:31;:12;:31;:::i;:::-;24614:57;;24682:176;24709:19;:6;:17;:19::i;:::-;24708:20;24742:4;24682:176;24807:7;:13;;;24834:7;:14;;;24682:12;:176::i;:::-;24883:23;;:::i;:::-;24920:25;;:::i;:::-;24958:118;:5;24998:7;25019:8;25041:5;25060:6;24958:118;:26;:118;:::i;:::-;24869:207;;;;25170:19;:6;:17;:19::i;:::-;25166:148;;;25214:15;:13;:15::i;:::-;25205:24;-1:-1:-1;25254:49:101;:38;:5;25267:7;25276:8;25286:5;25254:38;:12;:38;:::i;:::-;:47;:49::i;:::-;25243:60;;25166:148;25324:207;25351:21;:8;:19;:21::i;:::-;25350:22;:54;;;;;25392:6;:12;;;25376:28;;:6;:12;;;:28;;;;25350:54;25418:4;25324:207;25480:7;:13;;;25507:7;:14;;;25324:12;:207::i;:::-;25628:21;:6;25642;25628:21;:13;:21;:::i;:::-;25624:78;;;25676:15;:13;:15::i;:::-;25665:26;;25624:78;25720:6;;-1:-1:-1;25728:8:101;-1:-1:-1;;24289:1455:101;;;;;;;;;:::o;12867:770:72:-;13128:21;;:::i;:::-;13159;;:::i;:::-;13201:17;13221:23;:5;13231:12;13221:23;:9;:23;:::i;:::-;:29;;;:35;;-1:-1:-1;13266:26:72;;:::i;:::-;13295:132;:5;13352:13;13379:12;13405;13295:132;:43;:132;:::i;:::-;13266:161;;13438:34;;:::i;:::-;13475:92;;;;;;;;13511:45;13525:30;13537:9;13548:6;13525:11;:30::i;:::-;13511:9;;:45;:13;:45;:::i;:::-;13475:92;;13438:129;-1:-1:-1;13586:23:72;:5;13596:12;13586:23;:9;:23;:::i;:::-;:29;;;;13617:12;;-1:-1:-1;12867:770:72;-1:-1:-1;;;;;;;;12867:770:72:o;12357:375::-;12541:16;;:::i;:::-;12580:145;;;;;;;;12610:5;12580:145;;;;;;12636:78;12666:7;:13;;;12681:9;:15;;;12698:9;:15;;;12636:29;:78::i;:::-;12580:145;;12573:152;12357:375;-1:-1:-1;;;;12357:375:72:o;5782:203:104:-;5875:10;;:::i;:::-;-1:-1:-1;5908:70:104;;;;;;;;;5933:6;;5932:7;5908:70;;;5960:7;;;;5908:70;;;;5782:203;;;:::o;11786:381:72:-;11970:16;;:::i;:::-;12009:151;;;;;;;;12039:4;12009:151;;;;;;12064:85;12101:7;:13;;;12116:9;:15;;;12133:9;:15;;;12064:36;:85::i;1939:168:104:-;2005:10;;:::i;:::-;-1:-1:-1;2038:62:104;;;;;;;;;-1:-1:-1;2038:62:104;;;;;;;1939:168;:::o;28148:2057:101:-;28334:23;;:::i;:::-;28360:31;:5;28373:7;28382:8;28360:31;:12;:31;:::i;:::-;28334:57;;28406:28;28419:6;28427;28406:12;:28::i;:::-;28402:96;;;28481:7;;;28402:96;28534:30;;:::i;:::-;28567:27;:5;28585:8;28567:27;:17;:27;:::i;:::-;28637:11;;28534:60;;-1:-1:-1;28633:209:101;;;28682:50;:42;28711:6;:12;;;28682:42;;28690:8;:15;;;28682:24;;:28;;:42;;;;:::i;:::-;:48;:50::i;:::-;28664:68;;:15;;;:68;28633:209;;;28810:12;;;;28789:15;;28781:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;28763:68;;;;28633:209;28887:11;;28883:209;;;28932:50;:42;28961:6;:12;;;28932:42;;28940:8;:15;;;28932:24;;:28;;:42;;;;:::i;:50::-;28914:68;;:15;;;:68;28883:209;;;29060:12;;;;29039:15;;29031:50;;:42;;;:24;;;;:42;;:28;:42;:::i;:50::-;29013:68;;;;28883:209;29106:23;:6;:21;:23::i;:::-;:62;;;;;29133:35;:6;:33;:35::i;:::-;29102:464;;;29263:13;;29248:29;;;;;;:14;;;:29;;;;;;;;29278:14;;;;29248:45;;;;;;;:74;;;;;;;;;;;;;;;;;;;;;;;29102:464;;;29343:35;:6;:33;:35::i;:::-;:62;;;;;29382:23;:6;:21;:23::i;:::-;29339:227;;;29496:13;;29481:29;;;;;;:14;;;:29;;;;;;;;29511:14;;;;29481:45;;;;;;;:74;;;;;;;;;29554:1;29481:74;;;;;;;;;;;;29339:227;29580:15;:6;:13;:15::i;:::-;:37;;;;;29601:15;:6;:13;:15::i;:::-;29600:16;29580:37;29576:486;;;29738:13;;29723:29;;;;;;:14;;;:29;;;;;;;;29753:14;;;;29723:45;;;;;;;:91;;:74;;29805:8;29723:91;:81;:91;:::i;:::-;;29576:486;;;29837:15;:6;:13;:15::i;:::-;29836:16;29835:37;;;;;29857:15;:6;:13;:15::i;:::-;29831:231;;;29978:13;;29963:29;;;;;;:14;;;:29;;;;;;;;29993:14;;;;29963:45;;;;;;;:88;;:74;;30042:8;29963:88;:78;:88;:::i;:::-;;29831:231;30072:23;;;;:13;;;;:23;;;;;;;;:43;;:32;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30140:13;;30125:29;;;;:14;;;;:29;;;;;30155:14;;;;30125:45;;;;;;;:64;;;:54;:64;;;;:73;;;;;;;;;;;30072:43;30125:73;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28148:2057:101;;;;:::o;30298:590::-;30539:17;:8;:15;:17::i;:::-;30535:54;;;30572:7;;30535:54;30598:23;;:::i;:::-;30624:38;:5;30637:7;30646:8;30656:5;30624:38;:12;:38;:::i;:::-;30598:64;;30672:23;;:::i;:::-;30698:20;:6;30709:8;30698:20;:10;:20;:::i;:::-;30672:46;;30728:23;;:::i;:::-;30754:32;30772:6;30780:5;30754:17;:32::i;:::-;30728:58;-1:-1:-1;30796:85:101;:5;30822:7;30843:8;30728:58;30796:85;:12;:85;:::i;:::-;30298:590;;;;;;;;:::o;1503:3178:100:-;1851:14;;;;;:52;;-1:-1:-1;1869:21:100;;:34;;:32;;;:34::i;:::-;1847:2828;;;1941:3;1919:19;1982;2005:636;2077:30;2086:9;2097;2077:8;:30::i;:::-;2396:22;;;;2257:370;;2171:12;;2301:73;;2257:370;;2396:22;2440:17;;2479:14;;2515:16;;2553;;2591:18;;2257:370;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;2257:370:100;;;49:4:-1;25:18;;61:17;;2257:370:100;182:15:-1;2257:370:100;;;;179:29:-1;;;;160:49;;;2005:21:100;;:41;;;:636;;;:41;:636;:::i;:::-;1958:683;;;;2660:16;2656:2009;;;2728:15;:21;;;2701:73;;;2751:15;:22;;;2701:73;;;;;;;;;;;;;;;2656:2009;;;3610:2;3594:6;:13;:18;3590:871;;;-1:-1:-1;3645:9:100;;;;;;;;;-1:-1:-1;3645:9:100;;3590:871;;;4002:17;;;3996:24;3956:4;3944:17;;;;4059:23;;;4048:35;;4045:2;;;4323:4;4309:12;4305:23;4298:4;4290:6;4286:17;4279:50;4045:2;4424:6;4413:28;;;;;;;;;;;;;;4398:44;;3590:871;;4531:15;:21;;;4483:167;;;4574:15;:22;;;4625:6;4483:167;;;;;;;;;;;;;;;;2656:2009;1847:2828;;;;1503:3178;;;;;;;:::o;9487:1296:94:-;9694:36;;:::i;:::-;9733:137;9763:5;9782:4;:17;;;9813:4;:15;;;9842:18;:7;:16;:18::i;:::-;9733:16;:137::i;:::-;9694:176;;9880:36;;:::i;:::-;9919:137;9949:5;9968:4;:17;;;9999:4;:15;;;10028:18;:7;:16;:18::i;9919:137::-;9880:176;;10066:37;;:::i;:::-;10106:127;10136:5;10155:4;:18;;;10187:4;:15;;;10216:7;10106:16;:127::i;:::-;10066:167;;10243:37;;:::i;:::-;10283:127;10313:5;10332:4;:18;;;10364:4;:15;;;10393:7;10283:16;:127::i;:::-;10243:167;;10527:4;:18;;;:24;;;10426:350;;10452:4;:17;;;:23;;;10426:350;;;10489:4;:17;;;:24;;;10565:4;:18;;;:25;;;10604:4;:15;;;10633:4;:15;;;10662;10691;10720:16;10750;10426:350;;;;;;;;;;;;;;;;;;;;;;9487:1296;;;;;;;;:::o;20846:495:101:-;21023:20;21070:7;:13;;;21058:25;;:8;:25;;;:73;;;-1:-1:-1;21099:32:101;:5;21122:8;21099:32;:22;:32;:::i;:::-;21058:135;;;-1:-1:-1;21169:13:101;;21147:46;;:5;;21184:8;21147:46;:21;:46;:::i;:::-;21023:170;;21204:130;21230:15;21259:4;21204:130;21316:8;21204:12;:130::i;25750:660::-;25940:4;;;26015:21;:5;:19;:21::i;:::-;25994:42;;26051:9;26046:330;26066:10;26062:1;:14;26046:330;;;26097:20;;:::i;:::-;26120:51;26133:7;26142:19;:5;26159:1;26142:19;:16;:19;:::i;:::-;:28;26120:5;;:51;;:12;:51;:::i;:::-;26097:74;;26189:12;:3;:10;:12::i;:::-;26185:181;;;26221:8;;;26185:181;26254:8;;26250:116;;;26289:5;26282:12;;;;;;;;26250:116;26347:4;26333:18;;26046:330;;26078:3;;26046:330;;;-1:-1:-1;26392:11:101;;25750:660;-1:-1:-1;;;;;25750:660:101:o;10352:1244:72:-;10534:4;10540:16;;:::i;:::-;10572:26;;:::i;:::-;10626:15;;;;10601:41;;:5;;:41;:24;:41;:::i;:::-;10572:70;;10708:22;:9;:20;:22::i;:::-;10703:85;;10754:5;10761:15;:13;:15::i;:::-;10746:31;;;;;;;10703:85;10798:29;;:::i;:::-;10856:17;;;;10887:15;;;;10830:105;;:5;;10916:9;10830:105;:12;:105;:::i;:::-;10965:4;10945:24;;11066:18;;;;;11047:15;;;;10798:137;;-1:-1:-1;;11043:547:72;;11100:127;11130:4;:17;;;11165:4;:15;;;11198;:13;:15::i;:::-;11100:5;;:127;;;:12;:127;:::i;:::-;11249:4;;-1:-1:-1;11255:12:72;-1:-1:-1;11241:27:72;;-1:-1:-1;11241:27:72;11043:547;11422:17;;;;11457:15;;;;11380:160;;:5;;11490:9;11517;11380:160;:24;:160;:::i;:::-;-1:-1:-1;11562:5:72;;-1:-1:-1;11569:9:72;-1:-1:-1;10352:1244:72;;;;;;;:::o;10789:1132:94:-;11030:36;;:::i;:::-;11069:137;11099:5;11118:4;:17;;;11149:4;:15;;;11178:18;:7;:16;:18::i;11069:137::-;11030:176;;11216:36;;:::i;:::-;11255:137;11285:5;11304:4;:17;;;11335:4;:15;;;11364:18;:7;:16;:18::i;11255:137::-;11216:176;;11402:36;;:::i;:::-;11490:17;;;;11521:15;;;;11441:141;;11471:5;;11550:22;:7;11562:9;11550:22;:11;:22;:::i;11441:141::-;11402:180;;11698:4;:17;;;:23;;;11598:316;;11623:4;:17;;;:23;;;11598:316;;;11660:4;:17;;;:24;;;11735:4;:17;;;:24;;;11773:4;:15;;;11802:4;:15;;;11831;11860;11889;11598:316;;;;;;;;;;;;;10958:794:101;11102:16;;:::i;:::-;11134:27;;:::i;:::-;11164:24;:5;11179:8;11164:24;:14;:24;:::i;:::-;11134:54;;11198:30;;:::i;:::-;11231:27;:5;11249:8;11231:27;:17;:27;:::i;:::-;11198:60;-1:-1:-1;11269:13:101;11285:24;:5;11300:8;11285:24;:14;:24;:::i;:::-;11269:40;;11320:27;;:::i;:::-;11350:112;;;;;;;;11380:4;11350:112;;11405:46;;;;;11350:112;;;;11405:31;;;;;;:46;;11445:4;;11405:46;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11405:46:101;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11405:46:101;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;11405:46:101;;;;;;;;;11350:112;;11320:142;-1:-1:-1;11487:26:101;;:::i;:::-;11527;;:::i;:::-;11566:39;11589:8;11599:5;11566:22;:39::i;:::-;11473:132;;-1:-1:-1;11473:132:101;-1:-1:-1;11705:40:101;11473:132;11705:25;:10;11473:132;11705:25;:14;:25;:::i;:::-;:29;:40;:29;:40;:::i;:::-;11698:47;10958:794;-1:-1:-1;;;;;;;;;10958:794:101:o;19797:212::-;19966:31;;19939:4;19966:31;;;:21;;;;;:31;;;;;;20001:1;19966:36;;19797:212::o;2962:561:99:-;3122:4;3117:400;;3236:24;3255:4;3236:18;:24::i;:::-;3286:5;3317:26;3336:6;3317:18;:26::i;:::-;3369:6;3401:19;3411:8;3401:9;:19::i;6359:968::-;6463:12;6538:19;6577:5;6560:23;;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;6560:23:99;;;;-1:-1:-1;49:4;6689:572:99;6710:6;;6689:572;;6962:9;;6864:3;;;;;6962:6;;6864:3;;6962:9;;;;;;;;;;;;:14;6958:293;;7017:1;7013:5;7143:22;;7150:6;-1:-1:-1;7223:13:99;;6958:293;6689:572;;;-1:-1:-1;7308:12:99;;;7318:1;7308:12;;;;;;;;;;;-1:-1:-1;7301:19:99;6359:968;-1:-1:-1;;;6359:968:99:o;13598:264:101:-;13801:13;;13786:29;;13756:7;13786:29;;;:14;;;;;:29;;;;;;;;13816:14;;;;13786:45;;;;;;;:69;;;;;;;13598:264::o;21347:1355::-;21506:39;;:::i;:::-;21547:45;;:::i;:::-;21702:13;;21656:60;;;;21608:45;21656:60;;;:45;;;:60;;;;;;;21730:41;;21726:344;;21838:50;;;;;:41;;;;;;:50;;21880:7;;21838:50;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21838:50:101;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21838:50:101;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;21838:50:101;;;;;;;;;21787:101;;-1:-1:-1;21787:101:101;-1:-1:-1;21902:88:101;21936:5;21787:101;;21902:33;:88::i;:::-;-1:-1:-1;22004:55:101;;21726:344;-1:-1:-1;22101:49:101;;;;;;22164:41;;22160:536;;22272:50;;;;;:41;;;;;;:50;;22314:7;;22272:50;;;;22160:536;22546:14;:12;:14::i;:::-;22524:36;;22602:14;:12;:14::i;:::-;22574:42;-1:-1:-1;22630:55:101;;-1:-1:-1;22630:55:101;21347:1355;;;;;;:::o;16877:1476::-;17152:21;;:::i;:::-;17175;;:::i;:::-;17212:33;;:::i;:::-;17255;;:::i;:::-;17397:18;:52;;;;-1:-1:-1;17419:25:101;;:30;17397:52;17376:73;;17460:18;17481:21;:5;:19;:21::i;:::-;17460:42;;17517:9;17512:791;17532:10;17528:1;:14;17512:791;;;17563:24;;:::i;:::-;17590:78;17603:7;17612:19;:5;17629:1;17612:19;:16;:19;:::i;:::-;:28;17642:19;:5;17659:1;17642:19;:16;:19;:::i;:::-;:25;;;17590:5;;:78;;;:12;:78;:::i;:::-;17563:105;;17687:16;:7;:14;:16::i;:::-;17683:63;;;17723:8;;;17683:63;17760:26;;:::i;:::-;17789:13;:11;:13::i;:::-;17760:42;;17820:18;17816:140;;;17867:74;17883:13;;;:43;17897:19;:5;17914:1;17897:19;:16;:19;:::i;:::-;:28;17883:43;;;;;;;;;;;;;;17897:28;17883:43;17867:74;;;;;;;;17883:57;;17867:74;;;:15;:74::i;:::-;17858:83;;17816:140;17970:18;17991:50;18009:19;:5;18026:1;18009:19;:16;:19;:::i;:::-;:25;;;:31;17991:13;;;;;:50;:17;:50;:::i;:::-;18059:12;;17970:71;;-1:-1:-1;18055:238:101;;;18111:54;18133:31;18145:10;18157:6;18133:11;:31::i;:::-;18111:17;;;:54;:21;:54;:::i;:::-;18091:74;;18055:238;;;18224:54;18246:31;18258:10;18270:6;18246:11;:31::i;:::-;18224:17;;;:54;:21;:54;:::i;:::-;18204:74;;18055:238;17512:791;;;;17544:3;;17512:791;;;-1:-1:-1;18321:11:101;;18334;;-1:-1:-1;16877:1476:101;-1:-1:-1;;;;;;;16877:1476:101:o;1613:202:91:-;1726:7;1756:52;1786:6;1794:1;:7;;;1034:6;1756:29;:52::i;834:176:150:-;892:7;923:5;;;946:6;;;;938:46;;;;;;;;;;;;;8252:958:99;8524:13;;;8534:2;8524:13;;;8346:12;8524:13;;;;;;8386:14;;;;8346:12;;8524:13;;;21:6:-1;;104:10;8524:13:99;87:34:-1;135:17;;-1:-1;8524:13:99;8502:35;;902:2;8601:23;;8589:6;8596:1;8589:9;;;;;;;;;;;:35;;;;;;;;;;;1010:3;8646:27;;8634:6;8641:1;8634:9;;;;;;;;;;;:39;;;;;;;;;;;8787:9;8782:398;8802:2;8798:1;:6;8782:398;;;8891:1;8887:5;;8984:23;1232:3;8989:17;;8984:4;:23::i;:::-;8963:6;8975:5;8970:2;:10;8963:18;;;;;;;;;;;:44;;;;;;;;;;;9030:1;9025;:6;;9021:10;;9122:23;1232:3;9127:1;:17;9122:4;:23::i;:::-;9101:6;9113:5;9108:2;:10;9101:18;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;;9168:1:99;9163:6;;;;;8806:3;;8782:398;;7333:913;7427:12;7459:10;7455:51;;-1:-1:-1;7485:10:99;;;;;;;;;;;;;;;;;;;7455:51;7567:5;7555:9;7606:69;7613:6;;7606:69;;7635:8;;7662:2;7657:7;;;;7606:69;;;7716:17;7746:6;7736:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;7736:17:99;87:34:-1;135:17;;-1:-1;7736:17:99;-1:-1:-1;7845:5:99;;-1:-1:-1;7716:37:99;-1:-1:-1;7877:6:99;7860:358;7885:6;;7860:358;;8039:3;;8135:2;8131:1;:6;902:2;8117:21;8106:34;;8096:4;8101:1;8096:7;;;;;;;;;;;:44;;;;;;;;;;-1:-1:-1;8205:2:99;8200:7;;;;7860:358;;;-1:-1:-1;8235:4:99;7333:913;-1:-1:-1;;;;7333:913:99:o;3709:944:90:-;3872:17;;:::i;:::-;3912:29;;;4043:8;;;:67;;;4056:3;4063:1;4056:8;:53;;;;;4101:8;4068:4;4073:14;4068:20;;;;;;;;;;;;;;:29;;;:41;;4056:53;4041:70;4034:78;;;;4123:8;4159:1;4152:3;:8;;4134:14;:27;4123:38;;4171:16;4190:4;4195:3;4190:9;;;;;;;;;;;;;;:18;;;4171:37;;4233:11;4222:8;:22;4218:429;;;4267:127;4297:4;4319:14;4351:3;4372:8;4267:12;:127::i;:::-;4260:134;;;;;;;4218:429;4426:11;4415:8;:22;4411:236;;;4460:129;4490:4;4512:3;4518:1;4512:7;4537:12;4567:8;4460:12;:129::i;4411:236::-;4627:4;4632:3;4627:9;;;;;;;;;;;;;;4620:16;;;;;;;12006:279:101;12175:16;;:::i;:::-;-1:-1:-1;12229:13:101;;12214:29;;;;;;:14;;;;:29;;;;;;;;12244:14;;;;12214:45;;;;;;;;:64;;;:54;;;;:64;;;;;;12207:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12006:279::o;3766:137:104:-;3884:7;;;:12;;;;3766:137::o;4250:567:97:-;4381:16;;:::i;:::-;4442:11;;;;4468:10;;4434:20;;;;;4464:347;;;4501:130;;;;;;;;;4535:4;4501:130;;;4597:12;;;;4501:130;;;;4564:52;;:10;;:52;;1250:6;4564:52;:32;:52;:::i;:::-;4501:130;;;4494:137;;;;;4464:347;4669:131;;;;;;;;;-1:-1:-1;4669:131:97;;4766:12;;4669:131;;;;4733:52;;:10;;:52;;1250:6;4733:52;:32;:52;:::i;3609:151:104:-;3731:6;;3704:4;;3731:22;;;;-1:-1:-1;;3741:7:104;;;:12;;;;;3609:151::o;22851:1432:101:-;23112:16;;:::i;:::-;23130;;:::i;:::-;23162:23;;:::i;:::-;23188:31;:5;23201:7;23210:8;23188:31;:12;:31;:::i;:::-;23162:57;;23234:6;:12;;;23250:1;23234:17;:61;;;;-1:-1:-1;23269:26:101;23255:6;:10;;;:40;;;;;;;;;23234:61;23230:124;;;23319:6;23327:15;:13;:15::i;:::-;23311:32;;;;;;;23230:124;23364:23;;:::i;:::-;23390:32;23408:6;23416:5;23390:17;:32::i;:::-;23364:58;;23432:23;;:::i;:::-;23465:25;;:::i;:::-;23528:27;23505:6;:19;;;:50;;;;;;;;;23501:740;;;-1:-1:-1;23582:97:101;;;;;;;;;23616:11;;23582:97;;;;23652:12;;;;23582:97;;;;23711:27;23697:6;:10;;;:41;;;;;;;;;23693:111;;;23769:20;:8;23782:6;23769:20;:12;:20;:::i;:::-;23758:31;;23693:111;23826:46;23844:20;:6;23855:8;23844:20;:10;:20;:::i;:::-;23866:5;23826:17;:46::i;:::-;23817:55;;23501:740;;;23937:105;;;;;;;;23971:6;:11;;;23937:105;;;;;;24007:20;:6;:12;;;:18;:20::i;:::-;23937:105;;;;23928:114;-1:-1:-1;24074:26:101;24060:6;:10;;;:40;;;;;;;;;24056:106;;;24129:18;:6;24140;24129:18;:10;:18;:::i;:::-;24120:27;;24056:106;24186:44;24223:6;24186:32;24204:6;24212:5;24186:17;:32::i;:44::-;24175:55;;23501:740;24259:6;;;;-1:-1:-1;22851:1432:101;-1:-1:-1;;;;;;;;22851:1432:101:o;2928:308:104:-;3041:4;3076:1;:7;;;3065:18;;:1;:7;;;:18;;;3061:147;;;3103:7;;;;:12;;3099:62;;-1:-1:-1;3142:4:104;3135:11;;3099:62;-1:-1:-1;3191:6:104;;3181;;:16;;;;;;3174:23;;3061:147;-1:-1:-1;3224:5:104;2928:308;;;;:::o;13868:828:101:-;14102:19;;:::i;:::-;14140:45;;:::i;:::-;14189:38;14212:5;14219:7;14189:22;:38::i;:::-;14241:31;;14137:90;;-1:-1:-1;14241:36:101;;-1:-1:-1;14237:99:101;;14300:25;-1:-1:-1;14293:32:101;;14237:99;14363:34;;;:40;14346:14;14458:27;;;14363:34;14458:13;;:27;;;;;;;;;14442:69;;;;;;;;14458:52;;;;14442:69;;;14422:90;;14363:40;;14442:69;;:15;:69::i;:::-;14422:11;:90::i;:::-;14413:99;;14531:90;14543:6;14551:69;14567:5;:13;;:27;14581:12;14567:27;;;;;;;;;;;:52;;14551:69;;;;;;;;;;;;;;;;;:15;:69::i;14531:90::-;14638:51;;;;;;;;;;;;;13868:828;-1:-1:-1;;;;;;;13868:828:101:o;1132:228:92:-;1285:7;1315:38;1341:11;1315:21;:6;1326:9;1315:21;:10;:21;:::i;:::-;:25;:38;:25;:38;:::i;1516:409::-;1676:7;1703:11;;;:29;;-1:-1:-1;1718:14:92;;1703:29;1699:151;;;1811:28;1824:1;1827:11;1811:12;:28::i;:::-;1804:35;;;;1699:151;1866:52;1916:1;1866:45;1899:11;1866:28;1916:1;1866:21;:6;1877:9;1866:21;:10;:21;:::i;:::-;:25;:28;:25;:28;:::i;:45::-;:49;:52;:49;:52;:::i;10054:220:101:-;10191:21;;:::i;:::-;-1:-1:-1;10235:23:101;;;;:13;;;;:23;;;;;;;;;10228:39;;;;;;;;10235:32;;;10228:39;;;;;;;;;;;;;;;;10054:220;;;;:::o;1274:134:150:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;2811:315:92:-;2903:7;2951:6;2968:128;2994:16;;;;;3024:4;2968:128;2951:6;2968:12;:128::i;3909:156:104:-;4008:4;4035:1;:7;;;:12;;4046:1;4035:12;;:23;;;;-1:-1:-1;;4052:6:104;4051:7;;3909:156::o;4071:164::-;4182:4;4209:9;4216:1;4209:6;:9::i;:::-;:19;;;-1:-1:-1;;4222:6:104;;4071:164::o;1656:1437:93:-;1722:4;1859:27;;;:20;;;:27;;;;;;1901:15;;1897:1190;;2342:18;;2294:14;;;;;2342:22;2383:26;;;2379:406;;2429:17;2449:3;:11;;2461:9;2449:22;;;;;;;;;;;;;;;;2429:42;;2600:9;2571:3;:11;;2583:13;2571:26;;;;;;;;;;;;;;;;;;;:38;;;;2683:31;;;:20;;;:31;;;;;:44;;;2379:406;2888:17;;:3;;:17;;;;;;;;;;;;;;;;;;;;;;2980:3;:20;;:27;3001:5;2980:27;;;;;;;;;;;2973:34;;;3029:4;3022:11;;;;;;;1897:1190;3071:5;3064:12;;;;;1084:411;1147:4;1168:20;1177:3;1182:5;1168:8;:20::i;:::-;1163:326;;-1:-1:-1;27:10;;39:1;23:18;;;45:23;;1204:11:93;:23;;;;;;;;;;;;;1392:18;;1362:27;;;:20;;;:27;;;;;;:48;;;;1424:11;;1163:326;-1:-1:-1;1473:5:93;1466:12;;6306:137:104;6424:7;;;:12;;6306:137::o;4852:610::-;4962:10;;:::i;:::-;4988:17;;:::i;:::-;5029:6;;5019;;:16;;;;;;5015:418;;;5065:6;;5051:20;;;;5113:7;;;;;5122;;;;5100:30;;5113:7;5100:12;:30::i;:::-;5085:12;;;:45;5015:418;;;5176:1;:7;;;5165:1;:7;;;:18;5161:262;;5217:6;;5203:20;;;;5269:7;;;;;5278;;;;5256:30;;5269:7;5256:12;:30::i;5161:262::-;5339:6;;5325:20;;;;5391:7;;;;;5400;;;;5378:30;;5391:7;5378:12;:30::i;:::-;5363:12;;;:45;:12;4852:610;-1:-1:-1;;;4852:610:104:o;4906:534:97:-;5037:16;;:::i;:::-;5073:10;;5069:365;;;5106:139;;;;;;;;5140:4;5106:139;;;;;;5169:61;:53;1250:6;5169:53;;5209:5;:12;;;5169:53;;:5;:11;;;:33;;:53;;;;;:::i;:61::-;5106:139;;;;5099:146;-1:-1:-1;5099:146:97;;5069:365;5283:140;;;;;;;;;-1:-1:-1;5283:140:97;;5387:12;;5283:140;5347:11;;;;5283:140;;;;5347:61;;:53;;1250:6;;5347:53;;;:33;:53;:::i;686:610:154:-;746:4;1207:20;;1052:66;1246:23;;;;;;:42;;-1:-1:-1;;1273:15:154;;;1238:51;-1:-1:-1;;686:610:154:o;358:104:149:-;416:7;446:1;442;:5;:13;;454:1;442:13;;;-1:-1:-1;450:1:149;;358:104;-1:-1:-1;358:104:149:o;1898:1394:95:-;2055:4;2061:12;2121:15;2146:13;2169:24;2206:8;2196:19;;;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;2196:19:95;87:34:-1;135:17;;-1:-1;2196:19:95;;2169:46;;2770:1;2741;2704:9;2698:16;2666:4;2655:9;2651:20;2617:1;2579:7;2550:4;2528:267;2516:279;;2862:16;2851:27;;2906:8;2897:7;2894:21;2891:2;;;2945:8;2934:19;;2891:2;3052:7;3039:11;3032:28;3172:7;3169:1;3162:4;3149:11;3145:22;3130:50;3263:8;;;;-1:-1:-1;1898:1394:95;-1:-1:-1;;;;;;1898:1394:95:o;11979:369:94:-;12190:20;;:::i;:::-;12233:108;;;;;;;;;;;;;;;12301:29;:5;12314:7;12323:6;12301:29;:12;:29;:::i;:::-;12233:108;;12226:115;11979:369;-1:-1:-1;;;;;11979:369:94:o;20243:235:101:-;20434:22;;;;20407:4;20434:22;;;:15;;;;;:22;;;;;;;;:32;;;;;;;;;;20470:1;20434:37;;20243:235::o;2016:167:90:-;2156:13;:20;;2016:167::o;3280:371::-;3410:17;;:::i;:::-;3477:13;;:20;3443:164;;3469:28;;;;3511:4;;3443:164;;3469:5;;3443:12;:164::i;:::-;3624:13;;:20;;3638:5;;3624:20;;;;;;;;;;;;3617:27;;3280:371;;;;:::o;6149:151:104:-;6271:6;;6244:4;;6271:22;;;;-1:-1:-1;;6281:7:104;;;:12;;;6149:151::o;10738:214:101:-;10872:21;;:::i;:::-;-1:-1:-1;10916:23:101;;;;:13;;;;;:23;;;;;;;;;10909:36;;;;;;;10916:29;;;;10909:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10738:214::o;9848:200::-;9982:7;10012:23;;;:13;;;;;:23;;;;;:29;;;;9848:200::o;5583:601:97:-;5727:16;;:::i;:::-;5745;;:::i;:::-;5777:26;;:::i;:::-;-1:-1:-1;5806:81:97;;;;;;;;;5836:4;5806:81;;;5861:15;;;;5806:81;;;;;;5897:26;;:::i;:::-;-1:-1:-1;5926:82:97;;;;;;;;;-1:-1:-1;5926:82:97;;5982:15;;5926:82;;;;;;6018:26;;:::i;:::-;6047;6056:9;6067:5;6047:8;:26::i;:::-;6018:55;;6083:26;;:::i;:::-;6112;6121:9;6132:5;6112:8;:26::i;:::-;6156:9;;;;-1:-1:-1;5583:601:97;;-1:-1:-1;;;;;;5583:601:97:o;4677:169:104:-;4787:10;;:::i;:::-;4820:19;4824:1;4827:11;4836:1;4827:8;:11::i;:::-;4820:3;:19::i;26416:1031:101:-;26685:16;;;:31;26656:25;;26630:144;;26685:31;;-1:-1:-1;26656:60:101;26730:4;26630:144;:12;:144::i;:::-;26845:16;;;:37;26810:31;;26784:157;;26845:37;;;;;-1:-1:-1;26810:72:101;26896:4;26784:157;:12;:157::i;:::-;26956:25;;:30;;;;:70;;-1:-1:-1;26990:31:101;;:36;;26956:70;26952:489;;;27106:25;;27072:31;;27042:170;;-1:-1:-1;27149:4:101;27042:170;:12;:170::i;:::-;26952:489;;;27273:31;;27243:187;;27273:36;:70;;;;-1:-1:-1;27313:25:101;;:30;27273:70;27361:4;27243:187;:12;:187::i;1181:122:91:-;1244:11;;:::i;:::-;-1:-1:-1;1278:18:91;;;;;;;;;-1:-1:-1;1278:18:91;;1181:122;:::o;1309:124::-;1371:11;;:::i;:::-;-1:-1:-1;1405:21:91;;;;;;;;;1034:6;1405:21;;1309:124;:::o;1439:168::-;1532:11;;:::i;:::-;1566:34;;;;;;;;;1580:7;;1566:34;;1580:17;;1034:6;1580:17;:11;:17;:::i;:::-;1566:34;;1559:41;1439:168;-1:-1:-1;;1439:168:91:o;2159:459:150:-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:150;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;;;;;;;;;;1821:202:91;1934:7;1964:52;1994:6;1034;2008:1;:7;;;1964:29;:52::i;10178:325:99:-;10267:4;10335:2;10327:5;:10;10323:79;;;-1:-1:-1;902:2:99;10371:18;;10360:31;;10353:38;;10323:79;-1:-1:-1;956:2:99;10467:27;10456:40;;;10178:325::o;2081:724:92:-;2245:7;2272:11;;;:29;;-1:-1:-1;2287:14:92;;2272:29;2268:151;;;2380:28;2393:1;2396:11;2380:12;:28::i;2268:151::-;2428:11;2442:21;:6;2453:9;2442:21;:10;:21;:::i;:::-;2428:35;-1:-1:-1;2702:96:92;2757:32;2787:1;2757:25;2780:1;2757:18;:11;2787:1;2757:18;:15;:18;:::i;:32::-;2730:23;:6;2741:11;2730:23;:10;:23;:::i;:::-;:59;;:67;;2796:1;2730:67;;;2792:1;2730:67;2702:96;;:23;:6;2713:11;2702:23;:10;:23;:::i;:96::-;2695:103;2081:724;-1:-1:-1;;;;;2081:724:92:o;2288:634:104:-;2398:10;;:::i;:::-;2424:17;;:::i;:::-;2465:6;;2455;;:16;;;;;;2451:442;;;2501:6;;2487:20;;;;2549:7;;;;;2558;;;;2536:38;;:30;;;;;;;;:12;:30::i;:38::-;2521:53;;:12;;;:53;2451:442;;;2620:1;:7;;;2609:18;;:1;:7;;;:18;;;2605:278;;2661:6;;2647:20;;;;2713:7;;;;;2722;;;;2700:38;;:30;;;;;;;;:12;:30::i;2605:278::-;2791:6;;2777:20;;;;2843:7;;;;;2852;;;;2830:38;;:30;;;;;;;;:12;:30::i;:38::-;2815:53;;:12;;;:53;:12;2288:634;-1:-1:-1;;;2288:634:104:o;3073:130:150:-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;1732:187::-;1818:7;1853:12;1845:6;;;;1837:29;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:150;;;1732:187::o;3174:135:93:-;3247:4;3270:27;;;:20;;;;;:27;;;;;;:32;;;3174:135::o;2293:663:99:-;2479:4;2474:476;;2593:24;2612:4;2593:18;:24::i;:::-;2643:5;2674:26;2693:6;2674:18;:26::i;:::-;2726:6;2758:19;2768:8;2758:9;:19::i;4500:128:150:-;4558:7;4584:37;4588:1;4591;4584:37;;;;;;;;;;;;;;;;;:3;:37::i;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:150:o;5132:163::-;5218:7;5253:12;5245:6;5237:29;;;;;;;;;;;;;;;;5287:1;5283;:5;;;;;;;5132:163;-1:-1:-1;;;;5132:163:150:o;1564:12075:72:-;;;;;;;;;;-1:-1:-1;1564:12075:72;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1564:12075:72;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;1564:12075:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5:130:-1:-;72:20;;97:33;72:20;97:33;;176:778;;314:3;307:4;299:6;295:17;291:27;281:2;;332:1;329;322:12;281:2;369:6;356:20;391:101;406:85;484:6;406:85;;;391:101;;;382:110;;509:5;534:6;527:5;520:21;564:4;556:6;552:17;542:27;;586:4;581:3;577:14;570:21;;639:6;688:3;678:6;670;666:19;661:3;657:29;654:38;651:2;;;705:1;702;695:12;651:2;730:1;715:233;740:6;737:1;734:13;715:233;;;798:3;820:62;878:3;866:10;820:62;;;808:75;;-1:-1;906:4;897:14;;;;934:6;925:16;;;;;762:1;755:9;715:233;;;719:14;274:680;;;;;;;;980:699;;1093:3;1086:4;1078:6;1074:17;1070:27;1060:2;;1111:1;1108;1101:12;1060:2;1148:6;1135:20;1170:76;1185:60;1238:6;1185:60;;1170:76;1161:85;;1263:5;1288:6;1281:5;1274:21;1318:4;1310:6;1306:17;1296:27;;1340:4;1335:3;1331:14;1324:21;;1393:6;1440:3;1432:4;1424:6;1420:17;1415:3;1411:27;1408:36;1405:2;;;1457:1;1454;1447:12;1405:2;1482:1;1467:206;1492:6;1489:1;1486:13;1467:206;;;1550:3;1572:37;1605:3;1593:10;1572:37;;;1560:50;;-1:-1;1633:4;1624:14;;;;1652;;;;;1514:1;1507:9;1467:206;;1687:124;1751:20;;1776:30;1751:20;1776:30;;1818:128;1893:13;;1911:30;1893:13;1911:30;;1953:176;2043:20;;2068:56;2043:20;2068:56;;2314:436;;2423:3;2416:4;2408:6;2404:17;2400:27;2390:2;;2441:1;2438;2431:12;2390:2;2471:6;2465:13;2493:61;2508:45;2546:6;2508:45;;2493:61;2484:70;;2574:6;2567:5;2560:21;2610:4;2602:6;2598:17;2643:4;2636:5;2632:16;2678:3;2669:6;2664:3;2660:16;2657:25;2654:2;;;2695:1;2692;2685:12;2654:2;2705:39;2737:6;2732:3;2727;2705:39;;;2383:367;;;;;;;;2789:804;;2904:4;2892:9;2887:3;2883:19;2879:30;2876:2;;;2922:1;2919;2912:12;2876:2;2940:20;2955:4;2940:20;;;2931:29;-1:-1;3010:1;3042:46;3084:3;3064:9;3042:46;;;3017:72;;-1:-1;3158:2;3191:72;3259:3;3235:22;;;3191:72;;;3184:4;3177:5;3173:16;3166:98;3110:165;3324:2;3357:69;3422:3;3413:6;3402:9;3398:22;3357:69;;;3350:4;3343:5;3339:16;3332:95;3285:153;3489:2;3522:49;3567:3;3558:6;3547:9;3543:22;3522:49;;;3515:4;3508:5;3504:16;3497:75;3448:135;2870:723;;;;;3626:344;;3749:4;3737:9;3732:3;3728:19;3724:30;3721:2;;;3767:1;3764;3757:12;3721:2;3785:20;3800:4;3785:20;;;3776:29;-1:-1;3856:1;3888:60;3944:3;3924:9;3888:60;;;3863:86;;-1:-1;3874:5;3715:255;-1:-1;;3715:255;4005:615;;4114:4;4102:9;4097:3;4093:19;4089:30;4086:2;;;4132:1;4129;4122:12;4086:2;4150:20;4165:4;4150:20;;;4141:29;-1:-1;4222:1;4254:49;4299:3;4279:9;4254:49;;;4229:75;;-1:-1;4367:2;4400:49;4445:3;4421:22;;;4400:49;;;4393:4;4386:5;4382:16;4375:75;4325:136;4517:2;4550:48;4594:3;4585:6;4574:9;4570:22;4550:48;;;4543:4;4536:5;4532:16;4525:74;4471:139;4080:540;;;;;4653:464;;4761:4;4749:9;4744:3;4740:19;4736:30;4733:2;;;4779:1;4776;4769:12;4733:2;4797:20;4812:4;4797:20;;;4788:29;-1:-1;4868:1;4900:49;4945:3;4925:9;4900:49;;;4875:75;;-1:-1;5013:2;5046:49;5091:3;5067:22;;;5046:49;;;5039:4;5032:5;5028:16;5021:75;4971:136;4727:390;;;;;5159:1007;;5280:6;5268:9;5263:3;5259:19;5255:32;5252:2;;;5300:1;5297;5290:12;5252:2;5318:20;5333:4;5318:20;;;5309:29;-1:-1;5390:1;5422:75;5493:3;5473:9;5422:75;;;5397:101;;-1:-1;5567:3;5601:68;5665:3;5641:22;;;5601:68;;;5594:4;5587:5;5583:16;5576:94;5519:162;5740:3;5774:68;5838:3;5829:6;5818:9;5814:22;5774:68;;;5767:4;5760:5;5756:16;5749:94;5691:163;5910:3;5944:49;5989:3;5980:6;5969:9;5965:22;5944:49;;;5937:4;5930:5;5926:16;5919:75;5864:141;6061:3;6095:49;6140:3;6131:6;6120:9;6116:22;6095:49;;;6088:4;6081:5;6077:16;6070:75;6015:141;5246:920;;;;;6204:1023;;6323:4;6311:9;6306:3;6302:19;6298:30;6295:2;;;6341:1;6338;6331:12;6295:2;6359:20;6374:4;6359:20;;;6350:29;-1:-1;6432:31;;6483:18;6472:30;;6469:2;;;6515:1;6512;6505:12;6469:2;6550:95;6641:3;6632:6;6621:9;6617:22;6550:95;;;6525:121;;-1:-1;6710:2;6743:49;6788:3;6764:22;;;6743:49;;;6736:4;6729:5;6725:16;6718:75;6667:137;6891:2;6880:9;6876:18;6863:32;6915:18;6907:6;6904:30;6901:2;;;6947:1;6944;6937:12;6901:2;6982:70;7048:3;7039:6;7028:9;7024:22;6982:70;;7264:1251;;7378:6;7366:9;7361:3;7357:19;7353:32;7350:2;;;7398:1;7395;7388:12;7350:2;7416:20;7431:4;7416:20;;;7407:29;-1:-1;7490:1;7522:49;7567:3;7547:9;7522:49;;;7497:75;;-1:-1;7634:2;7667:49;7712:3;7688:22;;;7667:49;;;7660:4;7653:5;7649:16;7642:75;7593:135;7783:2;7816:46;7858:3;7849:6;7838:9;7834:22;7816:46;;;7809:4;7802:5;7798:16;7791:72;7738:136;7929:2;7962:49;8007:3;7998:6;7987:9;7983:22;7962:49;;;7955:4;7948:5;7944:16;7937:75;7884:139;8078:3;8112:49;8157:3;8148:6;8137:9;8133:22;8112:49;;;8105:4;8098:5;8094:16;8087:75;8033:140;8224:3;8258:69;8323:3;8314:6;8303:9;8299:22;8258:69;;;8251:4;8244:5;8240:16;8233:95;8183:156;8390:3;8424:69;8489:3;8480:6;8469:9;8465:22;8424:69;;;8417:4;8410:5;8406:16;8399:95;8349:156;7344:1171;;;;;8550:319;;8659:4;8647:9;8642:3;8638:19;8634:30;8631:2;;;8677:1;8674;8667:12;8631:2;8695:20;8710:4;8695:20;;;8686:29;-1:-1;8766:1;8798:49;8843:3;8823:9;8876:180;8968:20;;8993:58;8968:20;8993:58;;10109:130;10176:20;;10201:33;10176:20;10201:33;;10246:130;10313:20;;10338:33;10313:20;10338:33;;10520:134;10598:13;;10616:33;10598:13;10616:33;;10661:128;10727:20;;10752:32;10727:20;10752:32;;10796:257;;10908:2;10896:9;10887:7;10883:23;10879:32;10876:2;;;10924:1;10921;10914:12;10876:2;10959:1;10976:61;11029:7;11009:9;10976:61;;11060:354;;11181:2;11169:9;11160:7;11156:23;11152:32;11149:2;;;11197:1;11194;11187:12;11149:2;11232:24;;11276:18;11265:30;;11262:2;;;11308:1;11305;11298:12;11262:2;11328:70;11390:7;11381:6;11370:9;11366:22;11328:70;;11421:491;;;11599:2;11587:9;11578:7;11574:23;11570:32;11567:2;;;11615:1;11612;11605:12;11567:2;11650:1;11667:87;11746:7;11726:9;11667:87;;;11657:97;;11629:131;11791:2;11809:87;11888:7;11879:6;11868:9;11864:22;11809:87;;;11799:97;;11770:132;11561:351;;;;;;11919:752;;;;12144:3;12132:9;12123:7;12119:23;12115:33;12112:2;;;12161:1;12158;12151:12;12112:2;12196:1;12213:78;12283:7;12263:9;12213:78;;;12203:88;;12175:122;12356:2;12345:9;12341:18;12328:32;12380:18;12372:6;12369:30;12366:2;;;12412:1;12409;12402:12;12366:2;12432:83;12507:7;12498:6;12487:9;12483:22;12432:83;;;12422:93;;12307:214;12552:2;12570:85;12647:7;12638:6;12627:9;12623:22;12570:85;;;12560:95;;12531:130;12106:565;;;;;;13435:263;;13550:2;13538:9;13529:7;13525:23;13521:32;13518:2;;;13566:1;13563;13556:12;13518:2;13601:1;13618:64;13674:7;13654:9;13618:64;;13705:103;13778:24;13796:5;13778:24;;;13773:3;13766:37;13760:48;;;13935:94;14002:21;14017:5;14002:21;;14036:148;14135:43;14154:23;14171:5;14154:23;;;14135:43;;14191:148;14290:43;14309:23;14326:5;14309:23;;14346:152;14447:45;14467:24;14485:5;14467:24;;14505:356;;14633:38;14665:5;14633:38;;;14683:88;14764:6;14759:3;14683:88;;;14676:95;;14776:52;14821:6;14816:3;14809:4;14802:5;14798:16;14776:52;;;14840:16;;;;;14613:248;-1:-1;;14613:248;14868:347;;14980:39;15013:5;14980:39;;;15031:71;15095:6;15090:3;15031:71;;;15024:78;;15107:52;15152:6;15147:3;15140:4;15133:5;15129:16;15107:52;;;15180:29;15202:6;15180:29;;;15171:39;;;;14960:255;-1:-1;;;14960:255;15223:327;;15383:67;15447:2;15442:3;15383:67;;;15483:29;15463:50;;15541:2;15532:12;;15369:181;-1:-1;;15369:181;15559:370;;15719:67;15783:2;15778:3;15719:67;;;15819:34;15799:55;;15888:3;15883:2;15874:12;;15867:25;15920:2;15911:12;;15705:224;-1:-1;;15705:224;16002:576;16229:23;;16159:4;16150:14;;;16258:103;16154:3;16229:23;16258:103;;;16179:188;16442:4;16435:5;16431:16;16425:23;16454:103;16551:4;16546:3;16542:14;16528:12;16454:103;;16634:475;16840:23;;16773:4;16764:14;;;16869:63;16768:3;16840:23;16869:63;;;16793:145;17013:4;17006:5;17002:16;16996:23;17025:63;17082:4;17077:3;17073:14;17059:12;17025:63;;17159:451;17348:23;;17282:4;17273:14;;;17377:57;17277:3;17348:23;17377:57;;;17302:138;17514:4;17507:5;17503:16;17497:23;17526:63;17583:4;17578:3;17574:14;17560:12;17526:63;;17660:465;17863:23;;17797:4;17788:14;;;17892:57;17792:3;17863:23;17892:57;;18633:103;18706:24;18724:5;18706:24;;18743:103;18816:24;18834:5;18816:24;;18973:244;;19092:75;19163:3;19154:6;19092:75;;;-1:-1;19189:2;19180:12;;19080:137;-1:-1;19080:137;19224:553;;19440:93;19529:3;19520:6;19440:93;;;19433:100;;19544:73;19613:3;19604:6;19544:73;;;19639:1;19634:3;19630:11;19623:18;;19659:93;19748:3;19739:6;19659:93;;19784:978;;20098:93;20187:3;20178:6;20098:93;;;20091:100;;20202:73;20271:3;20262:6;20202:73;;;20297:1;20292:3;20288:11;20281:18;;20317:93;20406:3;20397:6;20317:93;;;20310:100;;20421:73;20490:3;20481:6;20421:73;;;20516:1;20511:3;20507:11;20500:18;;20536:93;20625:3;20616:6;20536:93;;;20529:100;;20640:73;20709:3;20700:6;20640:73;;;-1:-1;20735:1;20726:11;;20079:683;-1:-1;;;;;;20079:683;20769:1269;;21155:93;21244:3;21235:6;21155:93;;;21148:100;;21259:73;21328:3;21319:6;21259:73;;;21354:1;21349:3;21345:11;21338:18;;21374:93;21463:3;21454:6;21374:93;;;21367:100;;21478:73;21547:3;21538:6;21478:73;;;21573:1;21568:3;21564:11;21557:18;;21593:93;21682:3;21673:6;21593:93;;;21586:100;;21697:73;21766:3;21757:6;21697:73;;;21792:1;21787:3;21783:11;21776:18;;21812:93;21901:3;21892:6;21812:93;;;21805:100;;21916:73;21985:3;21976:6;21916:73;;;-1:-1;22011:1;22002:11;;21136:902;-1:-1;;;;;;;;21136:902;22045:213;22163:2;22148:18;;22177:71;22152:9;22221:6;22177:71;;22265:301;22403:2;22417:47;;;22388:18;;22478:78;22388:18;22542:6;22478:78;;22573:407;22764:2;22778:47;;;22749:18;;22839:131;22749:18;22839:131;;22987:407;23178:2;23192:47;;;23163:18;;23253:131;23163:18;23253:131;;23401:305;23565:2;23550:18;;23579:117;23554:9;23669:6;23579:117;;23713:213;23831:2;23816:18;;23845:71;23820:9;23889:6;23845:71;;23933:412;24099:2;24084:18;;24113:71;24088:9;24157:6;24113:71;;;24232:9;24226:4;24222:20;24217:2;24206:9;24202:18;24195:48;24257:78;24330:4;24321:6;24257:78;;24352:1040;24744:3;24729:19;;24759:71;24733:9;24803:6;24759:71;;;24841:118;24955:2;24944:9;24940:18;24931:6;24841:118;;;24970:72;25038:2;25027:9;25023:18;25014:6;24970:72;;;25053:117;25165:3;25154:9;25150:19;25141:6;25053:117;;;25181:73;25249:3;25238:9;25234:19;25225:6;25181:73;;;25265:117;25377:3;25366:9;25362:19;25353:6;25265:117;;;24715:677;;;;;;;;;;25399:1267;25877:3;25862:19;;25892:71;25866:9;25936:6;25892:71;;;25974:72;26042:2;26031:9;26027:18;26018:6;25974:72;;;26057;26125:2;26114:9;26110:18;26101:6;26057:72;;;26140;26208:2;26197:9;26193:18;26184:6;26140:72;;;26223:137;26355:3;26344:9;26340:19;26331:6;26223:137;;;26371;26503:3;26492:9;26488:19;26479:6;26371:137;;;26519;26651:3;26640:9;26636:19;26627:6;26519:137;;;25848:818;;;;;;;;;;;26673:1507;27243:3;27228:19;;27258:71;27232:9;27302:6;27258:71;;;27340:72;27408:2;27397:9;27393:18;27384:6;27340:72;;;27423;27491:2;27480:9;27476:18;27467:6;27423:72;;;27506;27574:2;27563:9;27559:18;27550:6;27506:72;;;27589:137;27721:3;27710:9;27706:19;27697:6;27589:137;;;27737;27869:3;27858:9;27854:19;27845:6;27737:137;;;27885;28017:3;28006:9;28002:19;27993:6;27885:137;;;28033;28165:3;28154:9;28150:19;28141:6;28033:137;;28187:256;28249:2;28243:9;28275:17;;;28350:18;28335:34;;28371:22;;;28332:62;28329:2;;;28407:1;28404;28397:12;28329:2;28423;28416:22;28227:216;;-1:-1;28227:216;28450:325;;28630:18;28622:6;28619:30;28616:2;;;28662:1;28659;28652:12;28616:2;-1:-1;28697:4;28685:17;;;28750:15;;28553:222;29089:318;;29229:18;29221:6;29218:30;29215:2;;;29261:1;29258;29251:12;29215:2;-1:-1;29392:4;29328;29305:17;;;;29324:9;29301:33;29382:15;;29152:255;29414:121;29501:12;;29472:63;29825:163;29928:19;;;29977:4;29968:14;;29921:67;29996:91;;30058:24;30076:5;30058:24;;30094:85;30160:13;30153:21;;30136:43;30186:144;30258:66;30247:78;;30230:100;30337:144;30409:66;30398:78;;30381:100;30488:72;30550:5;30533:27;30671:109;30744:30;30733:42;;30716:64;30787:113;30860:34;30849:46;;30832:68;30907:121;30980:42;30969:54;;30952:76;31114:88;31186:10;31175:22;;31158:44;31210:268;31275:1;31282:101;31296:6;31293:1;31290:13;31282:101;;;31363:11;;;31357:18;31344:11;;;31337:39;31318:2;31311:10;31282:101;;;31398:6;31395:1;31392:13;31389:2;;;-1:-1;;31463:1;31445:16;;31438:27;31259:219;31727:97;31815:2;31795:14;31811:7;31791:28;;31775:49;31832:117;31901:24;31919:5;31901:24;;;31894:5;31891:35;31881:2;;31940:1;31937;31930:12;31881:2;31875:74;;31956:111;32022:21;32037:5;32022:21;;32074:117;32166:1;32159:5;32156:12;32146:2;;32182:1;32179;32172:12;32319:167;32413:49;32456:5;32413:49;;32493:117;32562:24;32580:5;32562:24;;32617:117;32686:24;32704:5;32686:24;;32865:115;32933:23;32950:5;32933:23;",
  "source": "/*\n\n    Copyright 2021 Dolomite\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\npragma solidity ^0.5.7;\npragma experimental ABIEncoderV2;\n\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IExternalCallback } from \"../interfaces/IExternalCallback.sol\";\nimport { Account } from \"../lib/Account.sol\";\nimport { Actions } from \"../lib/Actions.sol\";\nimport { Cache } from \"../lib/Cache.sol\";\nimport { Decimal } from \"../lib/Decimal.sol\";\nimport { Events } from \"../lib/Events.sol\";\nimport { Interest } from \"../lib/Interest.sol\";\nimport { DolomiteMarginMath } from \"../lib/DolomiteMarginMath.sol\";\nimport { Monetary } from \"../lib/Monetary.sol\";\nimport { Require } from \"../lib/Require.sol\";\nimport { SafeExternalCallback } from \"../lib/SafeExternalCallback.sol\";\nimport { Storage } from \"../lib/Storage.sol\";\nimport { Types } from \"../lib/Types.sol\";\n\n\n/**\n * @dev A library that combines shares code for executing Liquidation or Vaporization actions.\n */\nlibrary LiquidateOrVaporizeImpl {\n    using Cache for Cache.MarketCache;\n    using SafeMath for uint256;\n    using Storage for Storage.State;\n    using Types for Types.Par;\n    using Types for Types.Wei;\n\n    // ============ Constants ============\n\n    bytes32 private constant FILE = \"LiquidateOrVaporizeImpl\";\n\n    // ============ Account Functions ============\n\n    function liquidate(\n        Storage.State storage state,\n        Cache.MarketCache memory cache,\n        Actions.LiquidateArgs memory args\n    )\n    public\n    {\n        state.requireIsGlobalOperator(msg.sender);\n        Require.that(\n            state.riskParams.oracleSentinel.isLiquidationAllowed(),\n            FILE,\n            \"Liquidations are disabled\"\n        );\n\n        // verify liquidatable\n        if (Account.Status.Liquid != state.getStatus(args.liquidAccount)) {\n            Require.that(\n                !state.isCollateralized(args.liquidAccount, cache, /* requireMinBorrow = */ false),\n                FILE,\n                \"Unliquidatable account\",\n                args.liquidAccount.owner,\n                args.liquidAccount.number\n            );\n            state.setStatus(args.liquidAccount, Account.Status.Liquid);\n        }\n\n        Types.Wei memory maxHeldWei = state.getWei(\n            args.liquidAccount,\n            args.heldMarket,\n            cache.get(args.heldMarket).index\n        );\n\n        Require.that(\n            !maxHeldWei.isNegative(),\n            FILE,\n            \"Collateral cannot be negative\",\n            args.heldMarket\n        );\n\n        Interest.Index memory owedIndex = cache.get(args.owedMarket).index;\n        Interest.Index memory heldIndex = cache.get(args.heldMarket).index;\n        (\n            Types.Par memory owedPar,\n            Types.Wei memory owedWei\n        ) = state.getNewParAndDeltaWeiForLiquidation(\n            args.liquidAccount,\n            args.owedMarket,\n            owedIndex,\n            args.amount\n        );\n\n        (\n            Monetary.Price memory heldPrice,\n            Monetary.Price memory owedPriceAdj\n        ) = _getLiquidationPrices(\n            state,\n            cache,\n            args.liquidAccount,\n            args.heldMarket,\n            args.owedMarket\n        );\n\n        Types.Wei memory heldWei = _owedWeiToHeldWei(owedWei, heldPrice, owedPriceAdj);\n\n        // if attempting to over-borrow the held asset, bound it by the maximum\n        if (heldWei.value > maxHeldWei.value) {\n            heldWei = maxHeldWei.negative();\n            owedWei = _heldWeiToOwedWei(heldWei, heldPrice, owedPriceAdj);\n\n            state.setPar(\n                args.liquidAccount,\n                args.heldMarket,\n                Types.zeroPar()\n            );\n            state.setParFromDeltaWei(\n                args.liquidAccount,\n                args.owedMarket,\n                owedIndex,\n                owedWei\n            );\n        } else {\n            state.setPar(\n                args.liquidAccount,\n                args.owedMarket,\n                owedPar\n            );\n            state.setParFromDeltaWei(\n                args.liquidAccount,\n                args.heldMarket,\n                heldIndex,\n                heldWei\n            );\n        }\n\n        // set the balances for the solid account\n        state.setParFromDeltaWei(\n            args.solidAccount,\n            args.owedMarket,\n            owedIndex,\n            owedWei.negative()\n        );\n        state.setParFromDeltaWei(\n            args.solidAccount,\n            args.heldMarket,\n            heldIndex,\n            heldWei.negative()\n        );\n\n        uint256 callbackGasLimit = state.riskParams.callbackGasLimit;\n        SafeExternalCallback.callInternalBalanceChangeIfNecessary(\n            args.liquidAccount,\n            args.solidAccount,\n            args.heldMarket,\n            heldWei,\n            args.owedMarket,\n            owedWei,\n            callbackGasLimit\n        );\n        SafeExternalCallback.callInternalBalanceChangeIfNecessary(\n            args.solidAccount,\n            args.liquidAccount,\n            args.heldMarket,\n            heldWei.negative(),\n            args.owedMarket,\n            owedWei.negative(),\n            callbackGasLimit\n        );\n\n        Events.logLiquidate(\n            state,\n            args,\n            heldWei,\n            owedWei\n        );\n    }\n\n    function vaporize(\n        Storage.State storage state,\n        Cache.MarketCache memory cache,\n        Actions.VaporizeArgs memory args\n    )\n    public\n    {\n        state.requireIsOperator(args.solidAccount, msg.sender);\n\n        // verify vaporizable\n        if (Account.Status.Vapor != state.getStatus(args.vaporAccount)) {\n            Require.that(\n                state.isVaporizable(args.vaporAccount, cache),\n                FILE,\n                \"Unvaporizable account\",\n                args.vaporAccount.owner,\n                args.vaporAccount.number\n            );\n            state.setStatus(args.vaporAccount, Account.Status.Vapor);\n        }\n\n        // First, attempt to refund using the same token\n        // cache.get(args.owedMarket).index is not stored in a variable here to avoid the \"stack too deep\" error\n        (\n            bool fullyRepaid,\n            Types.Wei memory excessWei\n        ) = _vaporizeUsingExcess(state, args, cache.get(args.owedMarket).index);\n        if (fullyRepaid) {\n            Events.logVaporize(\n                state,\n                args,\n                Types.zeroWei(),\n                Types.zeroWei(),\n                excessWei\n            );\n            return;\n        }\n\n        Types.Wei memory maxHeldWei = state.getNumExcessTokens(args.heldMarket);\n\n        Require.that(\n            !maxHeldWei.isNegative(),\n            FILE,\n            \"Excess cannot be negative\",\n            args.heldMarket\n        );\n\n        (\n            Types.Par memory owedPar,\n            Types.Wei memory owedWei\n        ) = state.getNewParAndDeltaWeiForLiquidation(\n            args.vaporAccount,\n            args.owedMarket,\n            cache.get(args.owedMarket).index,\n            args.amount\n        );\n\n        // For vaporizations, we do not want to use account-based risk overrides for the prices\n        (\n            Monetary.Price memory heldPrice,\n            Monetary.Price memory owedPriceAdj\n        ) = _getLiquidationPrices(\n            state,\n            cache,\n            /* liquidAccount = */ Account.Info(address(0), 0), // solium-disable-line indentation\n            args.heldMarket,\n            args.owedMarket\n        );\n\n        Types.Wei memory heldWei = _owedWeiToHeldWei(owedWei, heldPrice, owedPriceAdj);\n\n        // if attempting to over-borrow the held asset, bound it by the maximum\n        if (heldWei.value > maxHeldWei.value) {\n            heldWei = maxHeldWei.negative();\n            owedWei = _heldWeiToOwedWei(heldWei, heldPrice, owedPriceAdj);\n\n            state.setParFromDeltaWei(\n                args.vaporAccount,\n                args.owedMarket,\n                cache.get(args.owedMarket).index,\n                owedWei\n            );\n        } else {\n            state.setPar(\n                args.vaporAccount,\n                args.owedMarket,\n                owedPar\n            );\n        }\n\n        // set the balances for the solid account\n        state.setParFromDeltaWei(\n            args.solidAccount,\n            args.owedMarket,\n            cache.get(args.owedMarket).index,\n            owedWei.negative()\n        );\n        state.setParFromDeltaWei(\n            args.solidAccount,\n            args.heldMarket,\n            cache.get(args.heldMarket).index,\n            heldWei.negative()\n        );\n\n        uint256 callbackGasLimit = state.riskParams.callbackGasLimit;\n        SafeExternalCallback.callInternalBalanceChangeIfNecessary(\n            args.vaporAccount,\n            args.solidAccount,\n            args.heldMarket,\n            Types.zeroWei(),\n            args.owedMarket,\n            owedWei,\n            callbackGasLimit\n        );\n        SafeExternalCallback.callInternalBalanceChangeIfNecessary(\n            args.solidAccount,\n            args.vaporAccount,\n            args.heldMarket,\n            heldWei.negative(),\n            args.owedMarket,\n            owedWei.negative(),\n            callbackGasLimit\n        );\n\n        Events.logVaporize(\n            state,\n            args,\n            heldWei,\n            owedWei,\n            excessWei\n        );\n    }\n\n    /**\n     * Attempt to vaporize an account's balance using the excess tokens in the protocol. Return a\n     * bool and a wei value. The boolean is true if and only if the balance was fully vaporized. The\n     * Wei value is how many excess tokens were used to partially or fully vaporize the account's\n     * negative balance.\n     */\n    function _vaporizeUsingExcess(\n        Storage.State storage state,\n        Actions.VaporizeArgs memory args,\n        Interest.Index memory owedIndex\n    )\n    internal\n    returns (bool, Types.Wei memory)\n    {\n        Types.Wei memory excessWei = state.getNumExcessTokens(args.owedMarket);\n\n        // There are no excess funds, return zero\n        if (!excessWei.isPositive()) {\n            return (false, Types.zeroWei());\n        }\n\n        Types.Wei memory maxRefundWei = state.getWei(\n            args.vaporAccount,\n            args.owedMarket,\n            owedIndex\n        );\n        maxRefundWei.sign = true;\n\n        // The account is fully vaporizable using excess funds\n        if (excessWei.value >= maxRefundWei.value) {\n            state.setPar(\n                args.vaporAccount,\n                args.owedMarket,\n                Types.zeroPar()\n            );\n            return (true, maxRefundWei);\n        }\n\n        // The account is only partially vaporizable using excess funds\n        else {\n            state.setParFromDeltaWei(\n                args.vaporAccount,\n                args.owedMarket,\n                owedIndex,\n                excessWei\n            );\n            return (false, excessWei);\n        }\n    }\n\n    /**\n     * For the purposes of liquidation or vaporization, get the value-equivalent amount of owedWei\n     * given heldWei and the (spread-adjusted) prices of each asset.\n     */\n    function _heldWeiToOwedWei(\n        Types.Wei memory heldWei,\n        Monetary.Price memory heldPrice,\n        Monetary.Price memory owedPrice\n    )\n    internal\n    pure\n    returns (Types.Wei memory)\n    {\n        return Types.Wei({\n            sign: true,\n            value: DolomiteMarginMath.getPartialRoundUp(heldWei.value, heldPrice.value, owedPrice.value)\n        });\n    }\n\n    /**\n     * For the purposes of liquidation or vaporization, get the value-equivalent amount of heldWei\n     * given owedWei and the (spread-adjusted) prices of each asset.\n     */\n    function _owedWeiToHeldWei(\n        Types.Wei memory owedWei,\n        Monetary.Price memory heldPrice,\n        Monetary.Price memory owedPrice\n    )\n    internal\n    pure\n    returns (Types.Wei memory)\n    {\n        return Types.Wei({\n            sign: false,\n            value: DolomiteMarginMath.getPartial(owedWei.value, owedPrice.value, heldPrice.value)\n        });\n    }\n\n    /**\n     * Return the (spread-adjusted) prices of two assets for the purposes of liquidation or\n     * vaporization.\n     */\n    function _getLiquidationPrices(\n        Storage.State storage state,\n        Cache.MarketCache memory cache,\n        Account.Info memory liquidAccount,\n        uint256 heldMarketId,\n        uint256 owedMarketId\n    )\n    internal\n    view\n    returns (\n        Monetary.Price memory,\n        Monetary.Price memory\n    )\n    {\n        uint256 owedPrice = cache.get(owedMarketId).price.value;\n        Decimal.D256 memory spread = state.getLiquidationSpreadForAccountAndPair(\n            liquidAccount,\n            heldMarketId,\n            owedMarketId\n        );\n\n        Monetary.Price memory owedPriceAdj = Monetary.Price({\n            value: owedPrice.add(Decimal.mul(owedPrice, spread))\n        });\n\n        return (cache.get(heldMarketId).price, owedPriceAdj);\n    }\n}\n",
  "sourcePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
  "ast": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
    "exportedSymbols": {
      "LiquidateOrVaporizeImpl": [
        21985
      ]
    },
    "id": 21986,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21109,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "594:23:72"
      },
      {
        "id": 21110,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "618:33:72"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 21112,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 37366,
        "src": "653:69:72",
        "symbolAliases": [
          {
            "foreign": 21111,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts/utils/Address.sol",
        "id": 21114,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 37848,
        "src": "723:68:72",
        "symbolAliases": [
          {
            "foreign": 21113,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol",
        "file": "../interfaces/IExternalCallback.sol",
        "id": 21116,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 24773,
        "src": "792:72:72",
        "symbolAliases": [
          {
            "foreign": 21115,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../lib/Account.sol",
        "id": 21118,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 24886,
        "src": "865:45:72",
        "symbolAliases": [
          {
            "foreign": 21117,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../lib/Actions.sol",
        "id": 21120,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 25370,
        "src": "911:45:72",
        "symbolAliases": [
          {
            "foreign": 21119,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol",
        "file": "../lib/Cache.sol",
        "id": 21122,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 25933,
        "src": "957:41:72",
        "symbolAliases": [
          {
            "foreign": 21121,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../lib/Decimal.sol",
        "id": 21124,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 26024,
        "src": "999:45:72",
        "symbolAliases": [
          {
            "foreign": 21123,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
        "file": "../lib/Events.sol",
        "id": 21126,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27154,
        "src": "1045:43:72",
        "symbolAliases": [
          {
            "foreign": 21125,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../lib/Interest.sol",
        "id": 21128,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27751,
        "src": "1089:47:72",
        "symbolAliases": [
          {
            "foreign": 21127,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol",
        "file": "../lib/DolomiteMarginMath.sol",
        "id": 21130,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 26239,
        "src": "1137:67:72",
        "symbolAliases": [
          {
            "foreign": 21129,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../lib/Monetary.sol",
        "id": 21132,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27761,
        "src": "1205:47:72",
        "symbolAliases": [
          {
            "foreign": 21131,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../lib/Require.sol",
        "id": 21134,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 28453,
        "src": "1253:45:72",
        "symbolAliases": [
          {
            "foreign": 21133,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/SafeExternalCallback.sol",
        "file": "../lib/SafeExternalCallback.sol",
        "id": 21136,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 28604,
        "src": "1299:71:72",
        "symbolAliases": [
          {
            "foreign": 21135,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../lib/Storage.sol",
        "id": 21138,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 30712,
        "src": "1371:45:72",
        "symbolAliases": [
          {
            "foreign": 21137,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../lib/Types.sol",
        "id": 21140,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 31362,
        "src": "1417:41:72",
        "symbolAliases": [
          {
            "foreign": 21139,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@dev A library that combines shares code for executing Liquidation or Vaporization actions.",
        "fullyImplemented": true,
        "id": 21985,
        "linearizedBaseContracts": [
          21985
        ],
        "name": "LiquidateOrVaporizeImpl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21143,
            "libraryName": {
              "contractScope": null,
              "id": 21141,
              "name": "Cache",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25932,
              "src": "1608:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Cache_$25932",
                "typeString": "library Cache"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1602:34:72",
            "typeName": {
              "contractScope": null,
              "id": 21142,
              "name": "Cache.MarketCache",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25696,
              "src": "1618:17:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                "typeString": "struct Cache.MarketCache"
              }
            }
          },
          {
            "id": 21146,
            "libraryName": {
              "contractScope": null,
              "id": 21144,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37365,
              "src": "1647:8:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37365",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1641:27:72",
            "typeName": {
              "id": 21145,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1660:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 21149,
            "libraryName": {
              "contractScope": null,
              "id": 21147,
              "name": "Storage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30711,
              "src": "1679:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Storage_$30711",
                "typeString": "library Storage"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1673:32:72",
            "typeName": {
              "contractScope": null,
              "id": 21148,
              "name": "Storage.State",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28760,
              "src": "1691:13:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                "typeString": "struct Storage.State"
              }
            }
          },
          {
            "id": 21152,
            "libraryName": {
              "contractScope": null,
              "id": 21150,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31361,
              "src": "1716:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$31361",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1710:26:72",
            "typeName": {
              "contractScope": null,
              "id": 21151,
              "name": "Types.Par",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30890,
              "src": "1726:9:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                "typeString": "struct Types.Par"
              }
            }
          },
          {
            "id": 21155,
            "libraryName": {
              "contractScope": null,
              "id": 21153,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31361,
              "src": "1747:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$31361",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1741:26:72",
            "typeName": {
              "contractScope": null,
              "id": 21154,
              "name": "Types.Wei",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31149,
              "src": "1757:9:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                "typeString": "struct Types.Wei"
              }
            }
          },
          {
            "constant": true,
            "id": 21158,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 21985,
            "src": "1817:57:72",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21156,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1817:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4c69717569646174654f725661706f72697a65496d706c",
              "id": 21157,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1849:25:72",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9b87564603af6d419a3c02509211a09e18bbeee13fba0d447158f2e97eabed73",
                "typeString": "literal_string \"LiquidateOrVaporizeImpl\""
              },
              "value": "LiquidateOrVaporizeImpl"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 21468,
              "nodeType": "Block",
              "src": "2093:3825:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21170,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "2133:3:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 21171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2133:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21167,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "2103:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21169,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsGlobalOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "2103:29:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,address) view"
                      }
                    },
                    "id": 21172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2103:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21173,
                  "nodeType": "ExpressionStatement",
                  "src": "2103:41:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21177,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21160,
                                "src": "2180:5:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                  "typeString": "struct Storage.State storage pointer"
                                }
                              },
                              "id": 21178,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "riskParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28757,
                              "src": "2180:16:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                                "typeString": "struct Storage.RiskParams storage ref"
                              }
                            },
                            "id": 21179,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "oracleSentinel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28701,
                            "src": "2180:31:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                              "typeString": "contract IOracleSentinel"
                            }
                          },
                          "id": 21180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isLiquidationAllowed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24811,
                          "src": "2180:52:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                            "typeString": "function () view external returns (bool)"
                          }
                        },
                        "id": 21181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2180:54:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21182,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "2248:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c69717569646174696f6e73206172652064697361626c6564",
                        "id": 21183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2266:27:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_be6e9d348eaf9c9816cdc2ac59bbcf52782de7656142f04916c129ce5d6ecad0",
                          "typeString": "literal_string \"Liquidations are disabled\""
                        },
                        "value": "Liquidations are disabled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_be6e9d348eaf9c9816cdc2ac59bbcf52782de7656142f04916c129ce5d6ecad0",
                          "typeString": "literal_string \"Liquidations are disabled\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21174,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2154:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2154:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 21184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21185,
                  "nodeType": "ExpressionStatement",
                  "src": "2154:149:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    },
                    "id": 21194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21186,
                          "name": "Account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24885,
                          "src": "2349:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                            "typeString": "type(library Account)"
                          }
                        },
                        "id": 21187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24846,
                        "src": "2349:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                          "typeString": "type(enum Account.Status)"
                        }
                      },
                      "id": 21188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Liquid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2349:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21191,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "2390:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21192,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "liquidAccount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25006,
                          "src": "2390:18:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21189,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21160,
                          "src": "2374:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                            "typeString": "struct Storage.State storage pointer"
                          }
                        },
                        "id": 21190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28932,
                        "src": "2374:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$returns$_t_enum$_Status_$24846_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                          "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory) view returns (enum Account.Status)"
                        }
                      },
                      "id": 21193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2374:35:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "2349:60:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21227,
                  "nodeType": "IfStatement",
                  "src": "2345:438:72",
                  "trueBody": {
                    "id": 21226,
                    "nodeType": "Block",
                    "src": "2411:372:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2455:82:72",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21200,
                                      "name": "args",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21164,
                                      "src": "2479:4:72",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                        "typeString": "struct Actions.LiquidateArgs memory"
                                      }
                                    },
                                    "id": 21201,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidAccount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25006,
                                    "src": "2479:18:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                                      "typeString": "struct Account.Info memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21202,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21162,
                                    "src": "2499:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 21203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2531:5:72",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                                      "typeString": "struct Account.Info memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21198,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21160,
                                    "src": "2456:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                      "typeString": "struct Storage.State storage pointer"
                                    }
                                  },
                                  "id": 21199,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isCollateralized",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 29582,
                                  "src": "2456:22:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_bool_$returns$_t_bool_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                                    "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,struct Cache.MarketCache memory,bool) view returns (bool)"
                                  }
                                },
                                "id": 21204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2456:81:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21206,
                              "name": "FILE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21158,
                              "src": "2555:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e6c6971756964617461626c65206163636f756e74",
                              "id": 21207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2577:24:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df60173ee4973524d0452e3cc551d6395da1936350ff08ced091f44bebe3759f",
                                "typeString": "literal_string \"Unliquidatable account\""
                              },
                              "value": "Unliquidatable account"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21208,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21164,
                                  "src": "2619:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                    "typeString": "struct Actions.LiquidateArgs memory"
                                  }
                                },
                                "id": 21209,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25006,
                                "src": "2619:18:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21210,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "2619:24:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21211,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21164,
                                  "src": "2661:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                    "typeString": "struct Actions.LiquidateArgs memory"
                                  }
                                },
                                "id": 21212,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25006,
                                "src": "2661:18:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21213,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24850,
                              "src": "2661:25:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df60173ee4973524d0452e3cc551d6395da1936350ff08ced091f44bebe3759f",
                                "typeString": "literal_string \"Unliquidatable account\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21195,
                              "name": "Require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28452,
                              "src": "2425:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                                "typeString": "type(library Require)"
                              }
                            },
                            "id": 21197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "that",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27972,
                            "src": "2425:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,bytes32,bytes32,address,uint256) pure"
                            }
                          },
                          "id": 21214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2425:275:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21215,
                        "nodeType": "ExpressionStatement",
                        "src": "2425:275:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21219,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "2730:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21220,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "2730:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21221,
                                  "name": "Account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24885,
                                  "src": "2750:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                                    "typeString": "type(library Account)"
                                  }
                                },
                                "id": 21222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Status",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24846,
                                "src": "2750:14:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                                  "typeString": "type(enum Account.Status)"
                                }
                              },
                              "id": 21223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Liquid",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2750:21:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21216,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "2714:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30275,
                            "src": "2714:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_enum$_Status_$24846_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,enum Account.Status)"
                            }
                          },
                          "id": 21224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2714:58:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21225,
                        "nodeType": "ExpressionStatement",
                        "src": "2714:58:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21231,
                      "name": "maxHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "2793:27:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21230,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "2793:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21234,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "2849:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21235,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "2849:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21236,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "2881:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "2881:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21240,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "2920:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "2920:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21238,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21162,
                              "src": "2910:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21239,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "2910:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2910:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21243,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "2910:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21232,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "2823:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21233,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28995,
                      "src": "2823:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2823:129:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2793:159:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2989:24:72",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21249,
                              "name": "maxHeldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21231,
                              "src": "2990:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21250,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNegative",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31331,
                            "src": "2990:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                              "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                            }
                          },
                          "id": 21251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2990:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21253,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "3027:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6c6c61746572616c2063616e6e6f74206265206e65676174697665",
                        "id": 21254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3045:31:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8cfc72510f563a2f6b4a2834fe241efd2fa12d114b494896e41ff02ffe52075e",
                          "typeString": "literal_string \"Collateral cannot be negative\""
                        },
                        "value": "Collateral cannot be negative"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21255,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3090:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21256,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "3090:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8cfc72510f563a2f6b4a2834fe241efd2fa12d114b494896e41ff02ffe52075e",
                          "typeString": "literal_string \"Collateral cannot be negative\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21246,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2963:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27852,
                      "src": "2963:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,uint256) pure"
                      }
                    },
                    "id": 21257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2963:152:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21258,
                  "nodeType": "ExpressionStatement",
                  "src": "2963:152:72"
                },
                {
                  "assignments": [
                    21262
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21262,
                      "name": "owedIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3126:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21261,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "3126:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21269,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21265,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "3170:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21266,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owedMarket",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25008,
                          "src": "3170:15:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21263,
                          "name": "cache",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21162,
                          "src": "3160:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                            "typeString": "struct Cache.MarketCache memory"
                          }
                        },
                        "id": 21264,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25778,
                        "src": "3160:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                          "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                        }
                      },
                      "id": 21267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3160:26:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                        "typeString": "struct Cache.MarketInfo memory"
                      }
                    },
                    "id": 21268,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 25682,
                    "src": "3160:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_memory",
                      "typeString": "struct Interest.Index memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3126:66:72"
                },
                {
                  "assignments": [
                    21273
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21273,
                      "name": "heldIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3202:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21272,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "3202:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21280,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21276,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "3246:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21277,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "heldMarket",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25010,
                          "src": "3246:15:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21274,
                          "name": "cache",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21162,
                          "src": "3236:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                            "typeString": "struct Cache.MarketCache memory"
                          }
                        },
                        "id": 21275,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25778,
                        "src": "3236:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                          "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                        }
                      },
                      "id": 21278,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3236:26:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                        "typeString": "struct Cache.MarketInfo memory"
                      }
                    },
                    "id": 21279,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 25682,
                    "src": "3236:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_memory",
                      "typeString": "struct Interest.Index memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3202:66:72"
                },
                {
                  "assignments": [
                    21284,
                    21286
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21284,
                      "name": "owedPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3292:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21283,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "3292:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21286,
                      "name": "owedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3330:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21285,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "3330:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21297,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21289,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3421:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21290,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "3421:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21291,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3453:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21292,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "3453:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21293,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21262,
                        "src": "3482:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21294,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3505:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21295,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25002,
                        "src": "3505:11:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21287,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "3367:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21288,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWeiForLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30069,
                      "src": "3367:40:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3367:159:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3278:248:72"
                },
                {
                  "assignments": [
                    21301,
                    21303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21301,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3551:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21300,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "3551:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21303,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3596:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21302,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "3596:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21314,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21305,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "3678:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21306,
                        "name": "cache",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21162,
                        "src": "3697:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21307,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3716:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21308,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "3716:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21309,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3748:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21310,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "3748:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21311,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3777:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21312,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "3777:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21304,
                      "name": "_getLiquidationPrices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21984,
                      "src": "3643:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Cache.MarketCache memory,struct Account.Info memory,uint256,uint256) view returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 21313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3643:159:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3537:265:72"
                },
                {
                  "assignments": [
                    21318
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21318,
                      "name": "heldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3813:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21317,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "3813:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21324,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21320,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "3858:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21321,
                        "name": "heldPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21301,
                        "src": "3867:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21322,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21303,
                        "src": "3878:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      ],
                      "id": 21319,
                      "name": "_owedWeiToHeldWei",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21922,
                      "src": "3840:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3840:51:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3813:78:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21325,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "3986:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21326,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "3986:13:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21327,
                        "name": "maxHeldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21231,
                        "src": "4002:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21328,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "4002:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3986:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21389,
                    "nodeType": "Block",
                    "src": "4473:318:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21371,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4517:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21372,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4517:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21373,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4553:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21374,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25008,
                              "src": "4553:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21375,
                              "name": "owedPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21284,
                              "src": "4586:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21368,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4487:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21370,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "4487:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4487:120:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21377,
                        "nodeType": "ExpressionStatement",
                        "src": "4487:120:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21381,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4663:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21382,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4663:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21383,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4699:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21384,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "4699:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21385,
                              "name": "heldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21273,
                              "src": "4732:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21386,
                              "name": "heldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21318,
                              "src": "4759:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21378,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4621:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21380,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "4621:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4621:159:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21388,
                        "nodeType": "ExpressionStatement",
                        "src": "4621:159:72"
                      }
                    ]
                  },
                  "id": 21390,
                  "nodeType": "IfStatement",
                  "src": "3982:809:72",
                  "trueBody": {
                    "id": 21367,
                    "nodeType": "Block",
                    "src": "4020:447:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21330,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "4034:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21331,
                                "name": "maxHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21231,
                                "src": "4044:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              "id": 21332,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "negative",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31314,
                              "src": "4044:19:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4044:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "4034:31:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21335,
                        "nodeType": "ExpressionStatement",
                        "src": "4034:31:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21336,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "4079:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21338,
                                "name": "heldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21318,
                                "src": "4107:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21339,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21301,
                                "src": "4116:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21340,
                                "name": "owedPriceAdj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21303,
                                "src": "4127:12:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              ],
                              "id": 21337,
                              "name": "_heldWeiToOwedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21896,
                              "src": "4089:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4089:51:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "4079:61:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21343,
                        "nodeType": "ExpressionStatement",
                        "src": "4079:61:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21347,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4185:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21348,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4185:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21349,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4221:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21350,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "4221:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21351,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "4254:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroPar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30901,
                                "src": "4254:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Par_$30890_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Par memory)"
                                }
                              },
                              "id": 21353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4254:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21344,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4155:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21346,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "4155:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4155:128:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21355,
                        "nodeType": "ExpressionStatement",
                        "src": "4155:128:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21359,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4339:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21360,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4339:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21361,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4375:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21362,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25008,
                              "src": "4375:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21363,
                              "name": "owedIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "4408:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21364,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21286,
                              "src": "4435:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21356,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4297:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21358,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "4297:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4297:159:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21366,
                        "nodeType": "ExpressionStatement",
                        "src": "4297:159:72"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21394,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "4889:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21395,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "4889:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21396,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "4920:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21397,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "4920:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21398,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21262,
                        "src": "4949:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21399,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "4972:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21400,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "4972:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4972:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21391,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "4851:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21393,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "4851:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4851:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21403,
                  "nodeType": "ExpressionStatement",
                  "src": "4851:149:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21407,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5048:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21408,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5048:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21409,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5079:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21410,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5079:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21411,
                        "name": "heldIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21273,
                        "src": "5108:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21412,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "5131:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21413,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5131:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5131:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21404,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5010:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21406,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "5010:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5010:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21416,
                  "nodeType": "ExpressionStatement",
                  "src": "5010:149:72"
                },
                {
                  "assignments": [
                    21418
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21418,
                      "name": "callbackGasLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "5170:24:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5170:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21422,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21419,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5197:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "riskParams",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28757,
                      "src": "5197:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                        "typeString": "struct Storage.RiskParams storage ref"
                      }
                    },
                    "id": 21421,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "callbackGasLimit",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28703,
                    "src": "5197:33:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5170:60:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21426,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5311:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21427,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "5311:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21428,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5343:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21429,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5343:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21430,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5374:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21431,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5374:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21432,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "5403:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21433,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5424:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21434,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "5424:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21435,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "5453:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21436,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21418,
                        "src": "5474:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21423,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "5240:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "5240:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5240:260:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21438,
                  "nodeType": "ExpressionStatement",
                  "src": "5240:260:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21442,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5581:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21443,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5581:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21444,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5612:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21445,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "5612:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21446,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5644:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21447,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5644:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21448,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "5673:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21449,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5673:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5673:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21451,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5705:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21452,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "5705:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21453,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "5734:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21454,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5734:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5734:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21456,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21418,
                        "src": "5766:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21439,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "5510:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "5510:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5510:282:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21458,
                  "nodeType": "ExpressionStatement",
                  "src": "5510:282:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21462,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5836:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21463,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21164,
                        "src": "5855:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                          "typeString": "struct Actions.LiquidateArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21464,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "5873:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21465,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "5894:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                          "typeString": "struct Actions.LiquidateArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21459,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "5803:6:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 21461,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logLiquidate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27053,
                      "src": "5803:19:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_LiquidateArgs_$25011_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.LiquidateArgs memory,struct Types.Wei memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5803:108:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21467,
                  "nodeType": "ExpressionStatement",
                  "src": "5803:108:72"
                }
              ]
            },
            "documentation": null,
            "id": 21469,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "liquidate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21160,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "1961:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21159,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "1961:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21162,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "1998:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21161,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "1998:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21164,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "2038:33:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                    "typeString": "struct Actions.LiquidateArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21163,
                    "name": "Actions.LiquidateArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25011,
                    "src": "2038:21:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_LiquidateArgs_$25011_storage_ptr",
                      "typeString": "struct Actions.LiquidateArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1951:126:72"
            },
            "returnParameters": {
              "id": 21166,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:72"
            },
            "scope": 21985,
            "src": "1933:3985:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21775,
              "nodeType": "Block",
              "src": "6082:3926:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21481,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "6116:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21482,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "6116:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21483,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6135:3:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 21484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6135:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21478,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "6092:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21480,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29699,
                      "src": "6092:23:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,address) view"
                      }
                    },
                    "id": 21485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6092:54:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21486,
                  "nodeType": "ExpressionStatement",
                  "src": "6092:54:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    },
                    "id": 21495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21487,
                          "name": "Account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24885,
                          "src": "6191:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                            "typeString": "type(library Account)"
                          }
                        },
                        "id": 21488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24846,
                        "src": "6191:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                          "typeString": "type(enum Account.Status)"
                        }
                      },
                      "id": 21489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Vapor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6191:20:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21492,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21475,
                            "src": "6231:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                              "typeString": "struct Actions.VaporizeArgs memory"
                            }
                          },
                          "id": 21493,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "vaporAccount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25017,
                          "src": "6231:17:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21490,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21471,
                          "src": "6215:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                            "typeString": "struct Storage.State storage pointer"
                          }
                        },
                        "id": 21491,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28932,
                        "src": "6215:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$returns$_t_enum$_Status_$24846_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                          "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory) view returns (enum Account.Status)"
                        }
                      },
                      "id": 21494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6215:34:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "6191:58:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21526,
                  "nodeType": "IfStatement",
                  "src": "6187:394:72",
                  "trueBody": {
                    "id": 21525,
                    "nodeType": "Block",
                    "src": "6251:330:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21501,
                                    "name": "args",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21475,
                                    "src": "6315:4:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                      "typeString": "struct Actions.VaporizeArgs memory"
                                    }
                                  },
                                  "id": 21502,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "vaporAccount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25017,
                                  "src": "6315:17:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Info_$24851_memory",
                                    "typeString": "struct Account.Info memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 21503,
                                  "name": "cache",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21473,
                                  "src": "6334:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                    "typeString": "struct Cache.MarketCache memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Info_$24851_memory",
                                    "typeString": "struct Account.Info memory"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                    "typeString": "struct Cache.MarketCache memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21499,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21471,
                                  "src": "6295:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                    "typeString": "struct Storage.State storage pointer"
                                  }
                                },
                                "id": 21500,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isVaporizable",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30135,
                                "src": "6295:19:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                                  "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,struct Cache.MarketCache memory) view returns (bool)"
                                }
                              },
                              "id": 21504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6295:45:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21505,
                              "name": "FILE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21158,
                              "src": "6358:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e7661706f72697a61626c65206163636f756e74",
                              "id": 21506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6380:23:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_30fd012e2a1e1627dd44deca016bdb3f35adc2a996405399373222b6ad12b213",
                                "typeString": "literal_string \"Unvaporizable account\""
                              },
                              "value": "Unvaporizable account"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21507,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21475,
                                  "src": "6421:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                    "typeString": "struct Actions.VaporizeArgs memory"
                                  }
                                },
                                "id": 21508,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vaporAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25017,
                                "src": "6421:17:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21509,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "6421:23:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21510,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21475,
                                  "src": "6462:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                    "typeString": "struct Actions.VaporizeArgs memory"
                                  }
                                },
                                "id": 21511,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vaporAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25017,
                                "src": "6462:17:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21512,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24850,
                              "src": "6462:24:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_30fd012e2a1e1627dd44deca016bdb3f35adc2a996405399373222b6ad12b213",
                                "typeString": "literal_string \"Unvaporizable account\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21496,
                              "name": "Require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28452,
                              "src": "6265:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                                "typeString": "type(library Require)"
                              }
                            },
                            "id": 21498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "that",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27972,
                            "src": "6265:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,bytes32,bytes32,address,uint256) pure"
                            }
                          },
                          "id": 21513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6265:235:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21514,
                        "nodeType": "ExpressionStatement",
                        "src": "6265:235:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21518,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "6530:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21519,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "6530:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21520,
                                  "name": "Account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24885,
                                  "src": "6549:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                                    "typeString": "type(library Account)"
                                  }
                                },
                                "id": 21521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Status",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24846,
                                "src": "6549:14:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                                  "typeString": "type(enum Account.Status)"
                                }
                              },
                              "id": 21522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vapor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6549:20:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21515,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "6514:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21517,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30275,
                            "src": "6514:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_enum$_Status_$24846_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,enum Account.Status)"
                            }
                          },
                          "id": 21523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6514:56:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21524,
                        "nodeType": "ExpressionStatement",
                        "src": "6514:56:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21528,
                    21530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21528,
                      "name": "fullyRepaid",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "6775:16:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 21527,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6775:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21530,
                      "name": "excessWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "6805:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21529,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "6805:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21532,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "6865:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21533,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21475,
                        "src": "6872:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21536,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "6888:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21537,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "6888:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21534,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "6878:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "6878:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6878:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21539,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "6878:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "id": 21531,
                      "name": "_vaporizeUsingExcess",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21870,
                      "src": "6844:20:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Interest.Index memory) returns (bool,struct Types.Wei memory)"
                      }
                    },
                    "id": 21540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6844:67:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(bool,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6761:150:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21542,
                    "name": "fullyRepaid",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21528,
                    "src": "6925:11:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21559,
                  "nodeType": "IfStatement",
                  "src": "6921:232:72",
                  "trueBody": {
                    "id": 21558,
                    "nodeType": "Block",
                    "src": "6938:215:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21546,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "6988:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21547,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21475,
                              "src": "7011:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                "typeString": "struct Actions.VaporizeArgs memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21548,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7033:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "7033:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7033:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21551,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7066:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "7066:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7066:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21554,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21530,
                              "src": "7099:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                "typeString": "struct Actions.VaporizeArgs memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21543,
                              "name": "Events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27153,
                              "src": "6952:6:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                                "typeString": "type(library Events)"
                              }
                            },
                            "id": 21545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "logVaporize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27129,
                            "src": "6952:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                              "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Types.Wei memory,struct Types.Wei memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6952:170:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21556,
                        "nodeType": "ExpressionStatement",
                        "src": "6952:170:72"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 21477,
                        "id": 21557,
                        "nodeType": "Return",
                        "src": "7136:7:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21563
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21563,
                      "name": "maxHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7163:27:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21562,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "7163:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21569,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21566,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7218:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21567,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "7218:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21564,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7193:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNumExcessTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28912,
                      "src": "7193:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7193:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7163:71:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "7271:24:72",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21573,
                              "name": "maxHeldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21563,
                              "src": "7272:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21574,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNegative",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31331,
                            "src": "7272:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                              "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                            }
                          },
                          "id": 21575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7272:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21577,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "7309:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4578636573732063616e6e6f74206265206e65676174697665",
                        "id": 21578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7327:27:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a33eabdef9e311027802e848a7fd85ef6fd47e582873d5946a8db902cade8df7",
                          "typeString": "literal_string \"Excess cannot be negative\""
                        },
                        "value": "Excess cannot be negative"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21579,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7368:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21580,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "7368:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a33eabdef9e311027802e848a7fd85ef6fd47e582873d5946a8db902cade8df7",
                          "typeString": "literal_string \"Excess cannot be negative\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21570,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "7245:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27852,
                      "src": "7245:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,uint256) pure"
                      }
                    },
                    "id": 21581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7245:148:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21582,
                  "nodeType": "ExpressionStatement",
                  "src": "7245:148:72"
                },
                {
                  "assignments": [
                    21586,
                    21588
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21586,
                      "name": "owedPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7418:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21585,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "7418:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21588,
                      "name": "owedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7456:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21587,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "7456:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21604,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21591,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7547:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21592,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "7547:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21593,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7578:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21594,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "7578:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21597,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "7617:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21598,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "7617:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21595,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "7607:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21596,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "7607:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7607:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21600,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "7607:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21601,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7653:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21602,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25013,
                        "src": "7653:11:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21589,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7493:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21590,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWeiForLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30069,
                      "src": "7493:40:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7493:181:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7404:270:72"
                },
                {
                  "assignments": [
                    21608,
                    21610
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21608,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7795:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21607,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "7795:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21610,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7840:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21609,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "7840:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21626,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21612,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7922:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21613,
                        "name": "cache",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21473,
                        "src": "7941:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8003:1:72",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 21616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7995:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 21618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7995:10:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8007:1:72",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21614,
                            "name": "Account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24885,
                            "src": "7982:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                              "typeString": "type(library Account)"
                            }
                          },
                          "id": 21615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "Info",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24851,
                          "src": "7982:12:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Info_$24851_storage_ptr_$",
                            "typeString": "type(struct Account.Info storage pointer)"
                          }
                        },
                        "id": 21620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7982:27:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21621,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8058:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21622,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "8058:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21623,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8087:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21624,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "8087:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21611,
                      "name": "_getLiquidationPrices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21984,
                      "src": "7887:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Cache.MarketCache memory,struct Account.Info memory,uint256,uint256) view returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 21625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7887:225:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7781:331:72"
                },
                {
                  "assignments": [
                    21630
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21630,
                      "name": "heldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "8123:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21629,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "8123:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21636,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21632,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "8168:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21633,
                        "name": "heldPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "8177:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21634,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21610,
                        "src": "8188:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      ],
                      "id": 21631,
                      "name": "_owedWeiToHeldWei",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21922,
                      "src": "8150:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8150:51:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8123:78:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21637,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21630,
                        "src": "8296:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21638,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "8296:13:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21639,
                        "name": "maxHeldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21563,
                        "src": "8312:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "8312:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8296:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21683,
                    "nodeType": "Block",
                    "src": "8663:144:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21676,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8707:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21677,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "8707:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21678,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8742:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21679,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8742:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21680,
                              "name": "owedPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21586,
                              "src": "8775:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21673,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "8677:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21675,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "8677:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8677:119:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21682,
                        "nodeType": "ExpressionStatement",
                        "src": "8677:119:72"
                      }
                    ]
                  },
                  "id": 21684,
                  "nodeType": "IfStatement",
                  "src": "8292:515:72",
                  "trueBody": {
                    "id": 21672,
                    "nodeType": "Block",
                    "src": "8330:327:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21642,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "8344:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21643,
                                "name": "maxHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21563,
                                "src": "8354:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              "id": 21644,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "negative",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31314,
                              "src": "8354:19:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8354:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "8344:31:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21647,
                        "nodeType": "ExpressionStatement",
                        "src": "8344:31:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21648,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "8389:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21650,
                                "name": "heldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21630,
                                "src": "8417:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21651,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21608,
                                "src": "8426:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21652,
                                "name": "owedPriceAdj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21610,
                                "src": "8437:12:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              ],
                              "id": 21649,
                              "name": "_heldWeiToOwedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21896,
                              "src": "8399:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8399:51:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "8389:61:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21655,
                        "nodeType": "ExpressionStatement",
                        "src": "8389:61:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21659,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8507:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21660,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "8507:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21661,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8542:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21662,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8542:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21665,
                                      "name": "args",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21475,
                                      "src": "8585:4:72",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                        "typeString": "struct Actions.VaporizeArgs memory"
                                      }
                                    },
                                    "id": 21666,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owedMarket",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25019,
                                    "src": "8585:15:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21663,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21473,
                                    "src": "8575:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    }
                                  },
                                  "id": 21664,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "get",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25778,
                                  "src": "8575:9:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                                    "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                                  }
                                },
                                "id": 21667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8575:26:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                                  "typeString": "struct Cache.MarketInfo memory"
                                }
                              },
                              "id": 21668,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "index",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25682,
                              "src": "8575:32:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21669,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21588,
                              "src": "8625:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21656,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "8465:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21658,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "8465:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8465:181:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21671,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:181:72"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21688,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8905:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21689,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "8905:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21690,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8936:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "8936:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21694,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8975:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8975:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21692,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "8965:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21693,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "8965:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8965:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21697,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "8965:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21698,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "9011:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9011:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9011:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "8867:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "8867:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8867:172:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21702,
                  "nodeType": "ExpressionStatement",
                  "src": "8867:172:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21706,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9087:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21707,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9087:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21708,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9118:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21709,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9118:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21712,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "9157:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21713,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25021,
                              "src": "9157:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21710,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "9147:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21711,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "9147:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9147:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21715,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "9147:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21716,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "9193:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21717,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9193:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9193:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21703,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9049:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21705,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "9049:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9049:172:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21720,
                  "nodeType": "ExpressionStatement",
                  "src": "9049:172:72"
                },
                {
                  "assignments": [
                    21722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21722,
                      "name": "callbackGasLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "9232:24:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21721,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9232:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21726,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21723,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9259:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21724,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "riskParams",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28757,
                      "src": "9259:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                        "typeString": "struct Storage.RiskParams storage ref"
                      }
                    },
                    "id": 21725,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "callbackGasLimit",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28703,
                    "src": "9259:33:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9232:60:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21730,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9373:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21731,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "9373:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21732,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9404:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21733,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9404:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21734,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9435:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21735,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9435:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21736,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "9464:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 21737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "zeroWei",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31160,
                          "src": "9464:13:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function () pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9464:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21739,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9493:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21740,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "9493:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21741,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "9522:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21742,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21722,
                        "src": "9543:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21727,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "9302:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "9302:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9302:267:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21744,
                  "nodeType": "ExpressionStatement",
                  "src": "9302:267:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21748,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9650:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21749,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9650:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21750,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9681:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21751,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "9681:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21752,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9712:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21753,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9712:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21754,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "9741:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21755,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9741:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9741:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21757,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9773:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21758,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "9773:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21759,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "9802:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21760,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9802:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9802:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21762,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21722,
                        "src": "9834:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21745,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "9579:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "9579:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9579:281:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21764,
                  "nodeType": "ExpressionStatement",
                  "src": "9579:281:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21768,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9903:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21769,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21475,
                        "src": "9922:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21770,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21630,
                        "src": "9940:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21771,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "9961:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21772,
                        "name": "excessWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21530,
                        "src": "9982:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21765,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "9871:6:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 21767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logVaporize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27129,
                      "src": "9871:18:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Types.Wei memory,struct Types.Wei memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9871:130:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21774,
                  "nodeType": "ExpressionStatement",
                  "src": "9871:130:72"
                }
              ]
            },
            "documentation": null,
            "id": 21776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "vaporize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21471,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "5951:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21470,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "5951:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21473,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "5988:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21472,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "5988:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21475,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "6028:32:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                    "typeString": "struct Actions.VaporizeArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21474,
                    "name": "Actions.VaporizeArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25022,
                    "src": "6028:20:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_storage_ptr",
                      "typeString": "struct Actions.VaporizeArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5941:125:72"
            },
            "returnParameters": {
              "id": 21477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6082:0:72"
            },
            "scope": 21985,
            "src": "5924:4084:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21869,
              "nodeType": "Block",
              "src": "10562:1034:72",
              "statements": [
                {
                  "assignments": [
                    21792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21792,
                      "name": "excessWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21869,
                      "src": "10572:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21791,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "10572:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21798,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21795,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10626:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21796,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "10626:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21793,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21778,
                        "src": "10601:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21794,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNumExcessTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28912,
                      "src": "10601:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10601:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10572:70:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10707:23:72",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21799,
                          "name": "excessWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21792,
                          "src": "10708:9:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21800,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isPositive",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 31347,
                        "src": "10708:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                        }
                      },
                      "id": 21801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10708:22:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21810,
                  "nodeType": "IfStatement",
                  "src": "10703:85:72",
                  "trueBody": {
                    "id": 21809,
                    "nodeType": "Block",
                    "src": "10732:56:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 21803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10754:5:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21804,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "10761:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "10761:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10761:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21807,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "10753:24:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21808,
                        "nodeType": "Return",
                        "src": "10746:31:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21814,
                      "name": "maxRefundWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21869,
                      "src": "10798:29:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21813,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "10798:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21823,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21817,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10856:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21818,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "10856:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21819,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10887:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21820,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "10887:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21821,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21782,
                        "src": "10916:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21815,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21778,
                        "src": "10830:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21816,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28995,
                      "src": "10830:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10830:105:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10798:137:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21824,
                        "name": "maxRefundWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21814,
                        "src": "10945:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31146,
                      "src": "10945:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 21827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10965:4:72",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "10945:24:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 21829,
                  "nodeType": "ExpressionStatement",
                  "src": "10945:24:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21830,
                        "name": "excessWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21792,
                        "src": "11047:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21831,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "11047:15:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21832,
                        "name": "maxRefundWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21814,
                        "src": "11066:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21833,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "11066:18:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11047:37:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21867,
                    "nodeType": "Block",
                    "src": "11366:224:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21855,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11422:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21856,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "11422:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21857,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11457:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21858,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "11457:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21859,
                              "name": "owedIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21782,
                              "src": "11490:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21860,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21792,
                              "src": "11517:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21852,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21778,
                              "src": "11380:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21854,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "11380:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11380:160:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21862,
                        "nodeType": "ExpressionStatement",
                        "src": "11380:160:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 21863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11562:5:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 21864,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21792,
                              "src": "11569:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21865,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11561:18:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21866,
                        "nodeType": "Return",
                        "src": "11554:25:72"
                      }
                    ]
                  },
                  "id": 21868,
                  "nodeType": "IfStatement",
                  "src": "11043:547:72",
                  "trueBody": {
                    "id": 21851,
                    "nodeType": "Block",
                    "src": "11086:193:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21838,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11130:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "11130:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21840,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11165:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21841,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "11165:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21842,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11198:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroPar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30901,
                                "src": "11198:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Par_$30890_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Par memory)"
                                }
                              },
                              "id": 21844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11198:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21835,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21778,
                              "src": "11100:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21837,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "11100:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11100:127:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21846,
                        "nodeType": "ExpressionStatement",
                        "src": "11100:127:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 21847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11249:4:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 21848,
                              "name": "maxRefundWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21814,
                              "src": "11255:12:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21849,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11248:20:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21850,
                        "nodeType": "Return",
                        "src": "11241:27:72"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Attempt to vaporize an account's balance using the excess tokens in the protocol. Return a\nbool and a wei value. The boolean is true if and only if the balance was fully vaporized. The\nWei value is how many excess tokens were used to partially or fully vaporize the account's\nnegative balance.",
            "id": 21870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_vaporizeUsingExcess",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21778,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10391:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21777,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "10391:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21780,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10428:32:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                    "typeString": "struct Actions.VaporizeArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21779,
                    "name": "Actions.VaporizeArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25022,
                    "src": "10428:20:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_storage_ptr",
                      "typeString": "struct Actions.VaporizeArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21782,
                  "name": "owedIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10470:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21781,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "10470:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10381:126:72"
            },
            "returnParameters": {
              "id": 21788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21785,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10534:4:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10534:4:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21787,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10540:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21786,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "10540:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10533:24:72"
            },
            "scope": 21985,
            "src": "10352:1244:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21895,
              "nodeType": "Block",
              "src": "11992:175:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 21883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12039:4:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21886,
                              "name": "heldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21872,
                              "src": "12101:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21887,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31148,
                            "src": "12101:13:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21888,
                              "name": "heldPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21874,
                              "src": "12116:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12116:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21890,
                              "name": "owedPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21876,
                              "src": "12133:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21891,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12133:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21884,
                            "name": "DolomiteMarginMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26238,
                            "src": "12064:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                              "typeString": "type(library DolomiteMarginMath)"
                            }
                          },
                          "id": 21885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPartialRoundUp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26097,
                          "src": "12064:36:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12064:85:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21881,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31361,
                        "src": "12009:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 21882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Wei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31149,
                      "src": "12009:9:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Wei_$31149_storage_ptr_$",
                        "typeString": "type(struct Types.Wei storage pointer)"
                      }
                    },
                    "id": 21893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "sign",
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "12009:151:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "functionReturnParameters": 21880,
                  "id": 21894,
                  "nodeType": "Return",
                  "src": "12002:158:72"
                }
              ]
            },
            "documentation": "For the purposes of liquidation or vaporization, get the value-equivalent amount of owedWei\ngiven heldWei and the (spread-adjusted) prices of each asset.",
            "id": 21896,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_heldWeiToOwedWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21872,
                  "name": "heldWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11822:24:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21871,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "11822:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21874,
                  "name": "heldPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11856:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21873,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "11856:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21876,
                  "name": "owedPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11897:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21875,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "11897:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11812:122:72"
            },
            "returnParameters": {
              "id": 21880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21879,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11970:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21878,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "11970:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11969:18:72"
            },
            "scope": 21985,
            "src": "11786:381:72",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21921,
              "nodeType": "Block",
              "src": "12563:169:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 21909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12610:5:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21912,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21898,
                              "src": "12666:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21913,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31148,
                            "src": "12666:13:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21914,
                              "name": "owedPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21902,
                              "src": "12681:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21915,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12681:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21916,
                              "name": "heldPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21900,
                              "src": "12698:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21917,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12698:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21910,
                            "name": "DolomiteMarginMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26238,
                            "src": "12636:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                              "typeString": "type(library DolomiteMarginMath)"
                            }
                          },
                          "id": 21911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPartial",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26056,
                          "src": "12636:29:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12636:78:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21907,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31361,
                        "src": "12580:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 21908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Wei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31149,
                      "src": "12580:9:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Wei_$31149_storage_ptr_$",
                        "typeString": "type(struct Types.Wei storage pointer)"
                      }
                    },
                    "id": 21919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "sign",
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "12580:145:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "functionReturnParameters": 21906,
                  "id": 21920,
                  "nodeType": "Return",
                  "src": "12573:152:72"
                }
              ]
            },
            "documentation": "For the purposes of liquidation or vaporization, get the value-equivalent amount of heldWei\ngiven owedWei and the (spread-adjusted) prices of each asset.",
            "id": 21922,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_owedWeiToHeldWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21898,
                  "name": "owedWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12393:24:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21897,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "12393:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21900,
                  "name": "heldPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12427:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21899,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "12427:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21902,
                  "name": "owedPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12468:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21901,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "12468:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12383:122:72"
            },
            "returnParameters": {
              "id": 21906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21905,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12541:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21904,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "12541:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12540:18:72"
            },
            "scope": 21985,
            "src": "12357:375:72",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21983,
              "nodeType": "Block",
              "src": "13191:446:72",
              "statements": [
                {
                  "assignments": [
                    21940
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21940,
                      "name": "owedPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13201:17:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21939,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13201:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21947,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21943,
                            "name": "owedMarketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21932,
                            "src": "13231:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21941,
                            "name": "cache",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21926,
                            "src": "13221:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                              "typeString": "struct Cache.MarketCache memory"
                            }
                          },
                          "id": 21942,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "get",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25778,
                          "src": "13221:9:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                            "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                          }
                        },
                        "id": 21944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13221:23:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                          "typeString": "struct Cache.MarketInfo memory"
                        }
                      },
                      "id": 21945,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25684,
                      "src": "13221:29:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 21946,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "13221:35:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13201:55:72"
                },
                {
                  "assignments": [
                    21951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21951,
                      "name": "spread",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13266:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                        "typeString": "struct Decimal.D256"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21950,
                        "name": "Decimal.D256",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 25950,
                        "src": "13266:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                          "typeString": "struct Decimal.D256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21958,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21954,
                        "name": "liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21928,
                        "src": "13352:13:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21955,
                        "name": "heldMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21930,
                        "src": "13379:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21956,
                        "name": "owedMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21932,
                        "src": "13405:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21952,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21924,
                        "src": "13295:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21953,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidationSpreadForAccountAndPair",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29158,
                      "src": "13295:43:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_D256_$25950_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,uint256) view returns (struct Decimal.D256 memory)"
                      }
                    },
                    "id": 21957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13295:132:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13266:161:72"
                },
                {
                  "assignments": [
                    21962
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21962,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13438:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21961,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "13438:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21974,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21969,
                                "name": "owedPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21940,
                                "src": "13537:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21970,
                                "name": "spread",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21951,
                                "src": "13548:6:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                                  "typeString": "struct Decimal.D256 memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                                  "typeString": "struct Decimal.D256 memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21967,
                                "name": "Decimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26023,
                                "src": "13525:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Decimal_$26023_$",
                                  "typeString": "type(library Decimal)"
                                }
                              },
                              "id": 21968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26004,
                              "src": "13525:11:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_struct$_D256_$25950_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (uint256,struct Decimal.D256 memory) pure returns (uint256)"
                              }
                            },
                            "id": 21971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13525:30:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21965,
                            "name": "owedPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "13511:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 37205,
                          "src": "13511:13:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13511:45:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21963,
                        "name": "Monetary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27760,
                        "src": "13475:8:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Monetary_$27760_$",
                          "typeString": "type(library Monetary)"
                        }
                      },
                      "id": 21964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27756,
                      "src": "13475:14:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Price_$27756_storage_ptr_$",
                        "typeString": "type(struct Monetary.Price storage pointer)"
                      }
                    },
                    "id": 21973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "13475:92:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_memory",
                      "typeString": "struct Monetary.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13438:129:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21977,
                              "name": "heldMarketId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21930,
                              "src": "13596:12:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21975,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21926,
                              "src": "13586:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21976,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "13586:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13586:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21979,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25684,
                        "src": "13586:29:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21980,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21962,
                        "src": "13617:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "id": 21981,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13585:45:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "functionReturnParameters": 21938,
                  "id": 21982,
                  "nodeType": "Return",
                  "src": "13578:52:72"
                }
              ]
            },
            "documentation": "Return the (spread-adjusted) prices of two assets for the purposes of liquidation or\nvaporization.",
            "id": 21984,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getLiquidationPrices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21924,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12907:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21923,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "12907:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21926,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12944:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21925,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "12944:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21928,
                  "name": "liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12984:33:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21927,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "12984:12:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21930,
                  "name": "heldMarketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13027:20:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13027:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21932,
                  "name": "owedMarketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13057:20:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21931,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13057:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12897:186:72"
            },
            "returnParameters": {
              "id": 21938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21935,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13128:21:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21934,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "13128:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21937,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13159:21:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21936,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "13159:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13118:68:72"
            },
            "scope": 21985,
            "src": "12867:770:72",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 21986,
        "src": "1564:12075:72"
      }
    ],
    "src": "594:13046:72"
  },
  "legacyAST": {
    "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/impl/LiquidateOrVaporizeImpl.sol",
    "exportedSymbols": {
      "LiquidateOrVaporizeImpl": [
        21985
      ]
    },
    "id": 21986,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 21109,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".7"
        ],
        "nodeType": "PragmaDirective",
        "src": "594:23:72"
      },
      {
        "id": 21110,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "618:33:72"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 21112,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 37366,
        "src": "653:69:72",
        "symbolAliases": [
          {
            "foreign": 21111,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
        "file": "@openzeppelin/contracts/utils/Address.sol",
        "id": 21114,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 37848,
        "src": "723:68:72",
        "symbolAliases": [
          {
            "foreign": 21113,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/interfaces/IExternalCallback.sol",
        "file": "../interfaces/IExternalCallback.sol",
        "id": 21116,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 24773,
        "src": "792:72:72",
        "symbolAliases": [
          {
            "foreign": 21115,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Account.sol",
        "file": "../lib/Account.sol",
        "id": 21118,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 24886,
        "src": "865:45:72",
        "symbolAliases": [
          {
            "foreign": 21117,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Actions.sol",
        "file": "../lib/Actions.sol",
        "id": 21120,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 25370,
        "src": "911:45:72",
        "symbolAliases": [
          {
            "foreign": 21119,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Cache.sol",
        "file": "../lib/Cache.sol",
        "id": 21122,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 25933,
        "src": "957:41:72",
        "symbolAliases": [
          {
            "foreign": 21121,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Decimal.sol",
        "file": "../lib/Decimal.sol",
        "id": 21124,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 26024,
        "src": "999:45:72",
        "symbolAliases": [
          {
            "foreign": 21123,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Events.sol",
        "file": "../lib/Events.sol",
        "id": 21126,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27154,
        "src": "1045:43:72",
        "symbolAliases": [
          {
            "foreign": 21125,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Interest.sol",
        "file": "../lib/Interest.sol",
        "id": 21128,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27751,
        "src": "1089:47:72",
        "symbolAliases": [
          {
            "foreign": 21127,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/DolomiteMarginMath.sol",
        "file": "../lib/DolomiteMarginMath.sol",
        "id": 21130,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 26239,
        "src": "1137:67:72",
        "symbolAliases": [
          {
            "foreign": 21129,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Monetary.sol",
        "file": "../lib/Monetary.sol",
        "id": 21132,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 27761,
        "src": "1205:47:72",
        "symbolAliases": [
          {
            "foreign": 21131,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Require.sol",
        "file": "../lib/Require.sol",
        "id": 21134,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 28453,
        "src": "1253:45:72",
        "symbolAliases": [
          {
            "foreign": 21133,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/SafeExternalCallback.sol",
        "file": "../lib/SafeExternalCallback.sol",
        "id": 21136,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 28604,
        "src": "1299:71:72",
        "symbolAliases": [
          {
            "foreign": 21135,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Storage.sol",
        "file": "../lib/Storage.sol",
        "id": 21138,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 30712,
        "src": "1371:45:72",
        "symbolAliases": [
          {
            "foreign": 21137,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/cdc218/projects/dolomite/dolomite-protocol-v2/contracts/protocol/lib/Types.sol",
        "file": "../lib/Types.sol",
        "id": 21140,
        "nodeType": "ImportDirective",
        "scope": 21986,
        "sourceUnit": 31362,
        "src": "1417:41:72",
        "symbolAliases": [
          {
            "foreign": 21139,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": "@dev A library that combines shares code for executing Liquidation or Vaporization actions.",
        "fullyImplemented": true,
        "id": 21985,
        "linearizedBaseContracts": [
          21985
        ],
        "name": "LiquidateOrVaporizeImpl",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 21143,
            "libraryName": {
              "contractScope": null,
              "id": 21141,
              "name": "Cache",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25932,
              "src": "1608:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Cache_$25932",
                "typeString": "library Cache"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1602:34:72",
            "typeName": {
              "contractScope": null,
              "id": 21142,
              "name": "Cache.MarketCache",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 25696,
              "src": "1618:17:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                "typeString": "struct Cache.MarketCache"
              }
            }
          },
          {
            "id": 21146,
            "libraryName": {
              "contractScope": null,
              "id": 21144,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 37365,
              "src": "1647:8:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$37365",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1641:27:72",
            "typeName": {
              "id": 21145,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1660:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "id": 21149,
            "libraryName": {
              "contractScope": null,
              "id": 21147,
              "name": "Storage",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30711,
              "src": "1679:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Storage_$30711",
                "typeString": "library Storage"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1673:32:72",
            "typeName": {
              "contractScope": null,
              "id": 21148,
              "name": "Storage.State",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 28760,
              "src": "1691:13:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                "typeString": "struct Storage.State"
              }
            }
          },
          {
            "id": 21152,
            "libraryName": {
              "contractScope": null,
              "id": 21150,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31361,
              "src": "1716:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$31361",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1710:26:72",
            "typeName": {
              "contractScope": null,
              "id": 21151,
              "name": "Types.Par",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 30890,
              "src": "1726:9:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                "typeString": "struct Types.Par"
              }
            }
          },
          {
            "id": 21155,
            "libraryName": {
              "contractScope": null,
              "id": 21153,
              "name": "Types",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31361,
              "src": "1747:5:72",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Types_$31361",
                "typeString": "library Types"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1741:26:72",
            "typeName": {
              "contractScope": null,
              "id": 21154,
              "name": "Types.Wei",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 31149,
              "src": "1757:9:72",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                "typeString": "struct Types.Wei"
              }
            }
          },
          {
            "constant": true,
            "id": 21158,
            "name": "FILE",
            "nodeType": "VariableDeclaration",
            "scope": 21985,
            "src": "1817:57:72",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 21156,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "1817:7:72",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "4c69717569646174654f725661706f72697a65496d706c",
              "id": 21157,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1849:25:72",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_9b87564603af6d419a3c02509211a09e18bbeee13fba0d447158f2e97eabed73",
                "typeString": "literal_string \"LiquidateOrVaporizeImpl\""
              },
              "value": "LiquidateOrVaporizeImpl"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 21468,
              "nodeType": "Block",
              "src": "2093:3825:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21170,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "2133:3:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 21171,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "2133:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21167,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "2103:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21169,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsGlobalOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29661,
                      "src": "2103:29:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,address) view"
                      }
                    },
                    "id": 21172,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2103:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21173,
                  "nodeType": "ExpressionStatement",
                  "src": "2103:41:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21177,
                                "name": "state",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21160,
                                "src": "2180:5:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                  "typeString": "struct Storage.State storage pointer"
                                }
                              },
                              "id": 21178,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "riskParams",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 28757,
                              "src": "2180:16:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                                "typeString": "struct Storage.RiskParams storage ref"
                              }
                            },
                            "id": 21179,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "oracleSentinel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 28701,
                            "src": "2180:31:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IOracleSentinel_$24817",
                              "typeString": "contract IOracleSentinel"
                            }
                          },
                          "id": 21180,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isLiquidationAllowed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24811,
                          "src": "2180:52:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                            "typeString": "function () view external returns (bool)"
                          }
                        },
                        "id": 21181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2180:54:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21182,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "2248:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4c69717569646174696f6e73206172652064697361626c6564",
                        "id": 21183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2266:27:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_be6e9d348eaf9c9816cdc2ac59bbcf52782de7656142f04916c129ce5d6ecad0",
                          "typeString": "literal_string \"Liquidations are disabled\""
                        },
                        "value": "Liquidations are disabled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_be6e9d348eaf9c9816cdc2ac59bbcf52782de7656142f04916c129ce5d6ecad0",
                          "typeString": "literal_string \"Liquidations are disabled\""
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21174,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2154:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21176,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27816,
                      "src": "2154:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32) pure"
                      }
                    },
                    "id": 21184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2154:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21185,
                  "nodeType": "ExpressionStatement",
                  "src": "2154:149:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    },
                    "id": 21194,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21186,
                          "name": "Account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24885,
                          "src": "2349:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                            "typeString": "type(library Account)"
                          }
                        },
                        "id": 21187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24846,
                        "src": "2349:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                          "typeString": "type(enum Account.Status)"
                        }
                      },
                      "id": 21188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Liquid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2349:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21191,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "2390:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21192,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "liquidAccount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25006,
                          "src": "2390:18:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21189,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21160,
                          "src": "2374:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                            "typeString": "struct Storage.State storage pointer"
                          }
                        },
                        "id": 21190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28932,
                        "src": "2374:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$returns$_t_enum$_Status_$24846_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                          "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory) view returns (enum Account.Status)"
                        }
                      },
                      "id": 21193,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2374:35:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "2349:60:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21227,
                  "nodeType": "IfStatement",
                  "src": "2345:438:72",
                  "trueBody": {
                    "id": 21226,
                    "nodeType": "Block",
                    "src": "2411:372:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "2455:82:72",
                              "subExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21200,
                                      "name": "args",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21164,
                                      "src": "2479:4:72",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                        "typeString": "struct Actions.LiquidateArgs memory"
                                      }
                                    },
                                    "id": 21201,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "liquidAccount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25006,
                                    "src": "2479:18:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                                      "typeString": "struct Account.Info memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 21202,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21162,
                                    "src": "2499:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "66616c7365",
                                    "id": 21203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "bool",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2531:5:72",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "value": "false"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Info_$24851_memory",
                                      "typeString": "struct Account.Info memory"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21198,
                                    "name": "state",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21160,
                                    "src": "2456:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                      "typeString": "struct Storage.State storage pointer"
                                    }
                                  },
                                  "id": 21199,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "isCollateralized",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 29582,
                                  "src": "2456:22:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_bool_$returns$_t_bool_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                                    "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,struct Cache.MarketCache memory,bool) view returns (bool)"
                                  }
                                },
                                "id": 21204,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2456:81:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21206,
                              "name": "FILE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21158,
                              "src": "2555:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e6c6971756964617461626c65206163636f756e74",
                              "id": 21207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2577:24:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_df60173ee4973524d0452e3cc551d6395da1936350ff08ced091f44bebe3759f",
                                "typeString": "literal_string \"Unliquidatable account\""
                              },
                              "value": "Unliquidatable account"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21208,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21164,
                                  "src": "2619:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                    "typeString": "struct Actions.LiquidateArgs memory"
                                  }
                                },
                                "id": 21209,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25006,
                                "src": "2619:18:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21210,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "2619:24:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21211,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21164,
                                  "src": "2661:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                    "typeString": "struct Actions.LiquidateArgs memory"
                                  }
                                },
                                "id": 21212,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "liquidAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25006,
                                "src": "2661:18:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21213,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24850,
                              "src": "2661:25:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_df60173ee4973524d0452e3cc551d6395da1936350ff08ced091f44bebe3759f",
                                "typeString": "literal_string \"Unliquidatable account\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21195,
                              "name": "Require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28452,
                              "src": "2425:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                                "typeString": "type(library Require)"
                              }
                            },
                            "id": 21197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "that",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27972,
                            "src": "2425:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,bytes32,bytes32,address,uint256) pure"
                            }
                          },
                          "id": 21214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2425:275:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21215,
                        "nodeType": "ExpressionStatement",
                        "src": "2425:275:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21219,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "2730:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21220,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "2730:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21221,
                                  "name": "Account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24885,
                                  "src": "2750:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                                    "typeString": "type(library Account)"
                                  }
                                },
                                "id": 21222,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Status",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24846,
                                "src": "2750:14:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                                  "typeString": "type(enum Account.Status)"
                                }
                              },
                              "id": 21223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Liquid",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2750:21:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21216,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "2714:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21218,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30275,
                            "src": "2714:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_enum$_Status_$24846_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,enum Account.Status)"
                            }
                          },
                          "id": 21224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2714:58:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21225,
                        "nodeType": "ExpressionStatement",
                        "src": "2714:58:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21231,
                      "name": "maxHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "2793:27:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21230,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "2793:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21245,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21234,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "2849:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21235,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "2849:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21236,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "2881:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "2881:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21240,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "2920:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "2920:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21238,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21162,
                              "src": "2910:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21239,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "2910:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21242,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2910:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21243,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "2910:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21232,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "2823:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21233,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28995,
                      "src": "2823:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21244,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2823:129:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2793:159:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "2989:24:72",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21249,
                              "name": "maxHeldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21231,
                              "src": "2990:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21250,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNegative",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31331,
                            "src": "2990:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                              "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                            }
                          },
                          "id": 21251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2990:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21253,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "3027:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "436f6c6c61746572616c2063616e6e6f74206265206e65676174697665",
                        "id": 21254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3045:31:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8cfc72510f563a2f6b4a2834fe241efd2fa12d114b494896e41ff02ffe52075e",
                          "typeString": "literal_string \"Collateral cannot be negative\""
                        },
                        "value": "Collateral cannot be negative"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21255,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3090:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21256,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "3090:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8cfc72510f563a2f6b4a2834fe241efd2fa12d114b494896e41ff02ffe52075e",
                          "typeString": "literal_string \"Collateral cannot be negative\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21246,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "2963:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27852,
                      "src": "2963:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,uint256) pure"
                      }
                    },
                    "id": 21257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2963:152:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21258,
                  "nodeType": "ExpressionStatement",
                  "src": "2963:152:72"
                },
                {
                  "assignments": [
                    21262
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21262,
                      "name": "owedIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3126:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21261,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "3126:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21269,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21265,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "3170:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21266,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "owedMarket",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25008,
                          "src": "3170:15:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21263,
                          "name": "cache",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21162,
                          "src": "3160:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                            "typeString": "struct Cache.MarketCache memory"
                          }
                        },
                        "id": 21264,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25778,
                        "src": "3160:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                          "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                        }
                      },
                      "id": 21267,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3160:26:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                        "typeString": "struct Cache.MarketInfo memory"
                      }
                    },
                    "id": 21268,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 25682,
                    "src": "3160:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_memory",
                      "typeString": "struct Interest.Index memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3126:66:72"
                },
                {
                  "assignments": [
                    21273
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21273,
                      "name": "heldIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3202:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                        "typeString": "struct Interest.Index"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21272,
                        "name": "Interest.Index",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27471,
                        "src": "3202:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                          "typeString": "struct Interest.Index"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21280,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21276,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21164,
                            "src": "3246:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                              "typeString": "struct Actions.LiquidateArgs memory"
                            }
                          },
                          "id": 21277,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "heldMarket",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25010,
                          "src": "3246:15:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21274,
                          "name": "cache",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21162,
                          "src": "3236:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                            "typeString": "struct Cache.MarketCache memory"
                          }
                        },
                        "id": 21275,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "get",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25778,
                        "src": "3236:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                          "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                        }
                      },
                      "id": 21278,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3236:26:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                        "typeString": "struct Cache.MarketInfo memory"
                      }
                    },
                    "id": 21279,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "index",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 25682,
                    "src": "3236:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_memory",
                      "typeString": "struct Interest.Index memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3202:66:72"
                },
                {
                  "assignments": [
                    21284,
                    21286
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21284,
                      "name": "owedPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3292:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21283,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "3292:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21286,
                      "name": "owedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3330:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21285,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "3330:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21297,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21289,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3421:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21290,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "3421:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21291,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3453:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21292,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "3453:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21293,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21262,
                        "src": "3482:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21294,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3505:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21295,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25002,
                        "src": "3505:11:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21287,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "3367:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21288,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWeiForLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30069,
                      "src": "3367:40:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3367:159:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3278:248:72"
                },
                {
                  "assignments": [
                    21301,
                    21303
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21301,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3551:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21300,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "3551:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21303,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3596:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21302,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "3596:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21314,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21305,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "3678:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21306,
                        "name": "cache",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21162,
                        "src": "3697:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21307,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3716:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21308,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "3716:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21309,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3748:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21310,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "3748:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21311,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "3777:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21312,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "3777:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21304,
                      "name": "_getLiquidationPrices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21984,
                      "src": "3643:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Cache.MarketCache memory,struct Account.Info memory,uint256,uint256) view returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 21313,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3643:159:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3537:265:72"
                },
                {
                  "assignments": [
                    21318
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21318,
                      "name": "heldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "3813:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21317,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "3813:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21324,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21320,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "3858:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21321,
                        "name": "heldPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21301,
                        "src": "3867:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21322,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21303,
                        "src": "3878:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      ],
                      "id": 21319,
                      "name": "_owedWeiToHeldWei",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21922,
                      "src": "3840:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3840:51:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3813:78:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21325,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "3986:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21326,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "3986:13:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21327,
                        "name": "maxHeldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21231,
                        "src": "4002:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21328,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "4002:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3986:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21389,
                    "nodeType": "Block",
                    "src": "4473:318:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21371,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4517:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21372,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4517:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21373,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4553:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21374,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25008,
                              "src": "4553:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21375,
                              "name": "owedPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21284,
                              "src": "4586:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21368,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4487:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21370,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "4487:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4487:120:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21377,
                        "nodeType": "ExpressionStatement",
                        "src": "4487:120:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21381,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4663:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21382,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4663:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21383,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4699:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21384,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "4699:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21385,
                              "name": "heldIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21273,
                              "src": "4732:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21386,
                              "name": "heldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21318,
                              "src": "4759:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21378,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4621:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21380,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "4621:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4621:159:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21388,
                        "nodeType": "ExpressionStatement",
                        "src": "4621:159:72"
                      }
                    ]
                  },
                  "id": 21390,
                  "nodeType": "IfStatement",
                  "src": "3982:809:72",
                  "trueBody": {
                    "id": 21367,
                    "nodeType": "Block",
                    "src": "4020:447:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21334,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21330,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "4034:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21331,
                                "name": "maxHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21231,
                                "src": "4044:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              "id": 21332,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "negative",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31314,
                              "src": "4044:19:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4044:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "4034:31:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21335,
                        "nodeType": "ExpressionStatement",
                        "src": "4034:31:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21336,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "4079:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21338,
                                "name": "heldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21318,
                                "src": "4107:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21339,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21301,
                                "src": "4116:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21340,
                                "name": "owedPriceAdj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21303,
                                "src": "4127:12:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              ],
                              "id": 21337,
                              "name": "_heldWeiToOwedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21896,
                              "src": "4089:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21341,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4089:51:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "4079:61:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21343,
                        "nodeType": "ExpressionStatement",
                        "src": "4079:61:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21347,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4185:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21348,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4185:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21349,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4221:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21350,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25010,
                              "src": "4221:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21351,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "4254:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21352,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroPar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30901,
                                "src": "4254:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Par_$30890_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Par memory)"
                                }
                              },
                              "id": 21353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4254:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21344,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4155:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21346,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "4155:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4155:128:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21355,
                        "nodeType": "ExpressionStatement",
                        "src": "4155:128:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21359,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4339:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21360,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquidAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25006,
                              "src": "4339:18:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21361,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21164,
                                "src": "4375:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                                  "typeString": "struct Actions.LiquidateArgs memory"
                                }
                              },
                              "id": 21362,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25008,
                              "src": "4375:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21363,
                              "name": "owedIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21262,
                              "src": "4408:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21364,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21286,
                              "src": "4435:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21356,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21160,
                              "src": "4297:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21358,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "4297:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4297:159:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21366,
                        "nodeType": "ExpressionStatement",
                        "src": "4297:159:72"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21394,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "4889:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21395,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "4889:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21396,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "4920:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21397,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "4920:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21398,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21262,
                        "src": "4949:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21399,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "4972:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21400,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "4972:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4972:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21391,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "4851:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21393,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "4851:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4851:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21403,
                  "nodeType": "ExpressionStatement",
                  "src": "4851:149:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21407,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5048:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21408,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5048:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21409,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5079:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21410,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5079:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21411,
                        "name": "heldIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21273,
                        "src": "5108:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21412,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "5131:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21413,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5131:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5131:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21404,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5010:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21406,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "5010:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5010:149:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21416,
                  "nodeType": "ExpressionStatement",
                  "src": "5010:149:72"
                },
                {
                  "assignments": [
                    21418
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21418,
                      "name": "callbackGasLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 21468,
                      "src": "5170:24:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21417,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "5170:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21422,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21419,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5197:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21420,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "riskParams",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28757,
                      "src": "5197:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                        "typeString": "struct Storage.RiskParams storage ref"
                      }
                    },
                    "id": 21421,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "callbackGasLimit",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28703,
                    "src": "5197:33:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5170:60:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21426,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5311:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21427,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "5311:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21428,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5343:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21429,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5343:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21430,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5374:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21431,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5374:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21432,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "5403:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21433,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5424:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21434,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "5424:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21435,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "5453:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21436,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21418,
                        "src": "5474:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21423,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "5240:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21425,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "5240:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21437,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5240:260:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21438,
                  "nodeType": "ExpressionStatement",
                  "src": "5240:260:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21442,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5581:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21443,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25004,
                        "src": "5581:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21444,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5612:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21445,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "liquidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25006,
                        "src": "5612:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21446,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5644:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21447,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25010,
                        "src": "5644:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21448,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21318,
                            "src": "5673:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21449,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5673:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5673:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21451,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21164,
                          "src": "5705:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                            "typeString": "struct Actions.LiquidateArgs memory"
                          }
                        },
                        "id": 21452,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25008,
                        "src": "5705:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21453,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21286,
                            "src": "5734:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21454,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "5734:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21455,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5734:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21456,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21418,
                        "src": "5766:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21439,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "5510:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "5510:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21457,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5510:282:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21458,
                  "nodeType": "ExpressionStatement",
                  "src": "5510:282:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21462,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21160,
                        "src": "5836:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21463,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21164,
                        "src": "5855:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                          "typeString": "struct Actions.LiquidateArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21464,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21318,
                        "src": "5873:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21465,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21286,
                        "src": "5894:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                          "typeString": "struct Actions.LiquidateArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21459,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "5803:6:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 21461,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logLiquidate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27053,
                      "src": "5803:19:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_LiquidateArgs_$25011_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.LiquidateArgs memory,struct Types.Wei memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21466,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5803:108:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21467,
                  "nodeType": "ExpressionStatement",
                  "src": "5803:108:72"
                }
              ]
            },
            "documentation": null,
            "id": 21469,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "liquidate",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21160,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "1961:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21159,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "1961:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21162,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "1998:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21161,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "1998:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21164,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21469,
                  "src": "2038:33:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_LiquidateArgs_$25011_memory_ptr",
                    "typeString": "struct Actions.LiquidateArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21163,
                    "name": "Actions.LiquidateArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25011,
                    "src": "2038:21:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_LiquidateArgs_$25011_storage_ptr",
                      "typeString": "struct Actions.LiquidateArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1951:126:72"
            },
            "returnParameters": {
              "id": 21166,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2093:0:72"
            },
            "scope": 21985,
            "src": "1933:3985:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21775,
              "nodeType": "Block",
              "src": "6082:3926:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21481,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "6116:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21482,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "6116:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21483,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38107,
                          "src": "6135:3:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 21484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6135:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21478,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "6092:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21480,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "requireIsOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29699,
                      "src": "6092:23:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_address_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,address) view"
                      }
                    },
                    "id": 21485,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6092:54:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21486,
                  "nodeType": "ExpressionStatement",
                  "src": "6092:54:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_Status_$24846",
                      "typeString": "enum Account.Status"
                    },
                    "id": 21495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21487,
                          "name": "Account",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24885,
                          "src": "6191:7:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                            "typeString": "type(library Account)"
                          }
                        },
                        "id": 21488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "Status",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24846,
                        "src": "6191:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                          "typeString": "type(enum Account.Status)"
                        }
                      },
                      "id": 21489,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Vapor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6191:20:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 21492,
                            "name": "args",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21475,
                            "src": "6231:4:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                              "typeString": "struct Actions.VaporizeArgs memory"
                            }
                          },
                          "id": 21493,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "vaporAccount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25017,
                          "src": "6231:17:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Info_$24851_memory",
                            "typeString": "struct Account.Info memory"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21490,
                          "name": "state",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21471,
                          "src": "6215:5:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                            "typeString": "struct Storage.State storage pointer"
                          }
                        },
                        "id": 21491,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getStatus",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 28932,
                        "src": "6215:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$returns$_t_enum$_Status_$24846_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                          "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory) view returns (enum Account.Status)"
                        }
                      },
                      "id": 21494,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6215:34:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_Status_$24846",
                        "typeString": "enum Account.Status"
                      }
                    },
                    "src": "6191:58:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21526,
                  "nodeType": "IfStatement",
                  "src": "6187:394:72",
                  "trueBody": {
                    "id": 21525,
                    "nodeType": "Block",
                    "src": "6251:330:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21501,
                                    "name": "args",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21475,
                                    "src": "6315:4:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                      "typeString": "struct Actions.VaporizeArgs memory"
                                    }
                                  },
                                  "id": 21502,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "vaporAccount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25017,
                                  "src": "6315:17:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Info_$24851_memory",
                                    "typeString": "struct Account.Info memory"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 21503,
                                  "name": "cache",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21473,
                                  "src": "6334:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                    "typeString": "struct Cache.MarketCache memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Info_$24851_memory",
                                    "typeString": "struct Account.Info memory"
                                  },
                                  {
                                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                    "typeString": "struct Cache.MarketCache memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21499,
                                  "name": "state",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21471,
                                  "src": "6295:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                    "typeString": "struct Storage.State storage pointer"
                                  }
                                },
                                "id": 21500,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "isVaporizable",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30135,
                                "src": "6295:19:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                                  "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,struct Cache.MarketCache memory) view returns (bool)"
                                }
                              },
                              "id": 21504,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6295:45:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21505,
                              "name": "FILE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21158,
                              "src": "6358:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "556e7661706f72697a61626c65206163636f756e74",
                              "id": 21506,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6380:23:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_30fd012e2a1e1627dd44deca016bdb3f35adc2a996405399373222b6ad12b213",
                                "typeString": "literal_string \"Unvaporizable account\""
                              },
                              "value": "Unvaporizable account"
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21507,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21475,
                                  "src": "6421:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                    "typeString": "struct Actions.VaporizeArgs memory"
                                  }
                                },
                                "id": 21508,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vaporAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25017,
                                "src": "6421:17:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21509,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24848,
                              "src": "6421:23:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21510,
                                  "name": "args",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21475,
                                  "src": "6462:4:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                    "typeString": "struct Actions.VaporizeArgs memory"
                                  }
                                },
                                "id": 21511,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vaporAccount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 25017,
                                "src": "6462:17:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Info_$24851_memory",
                                  "typeString": "struct Account.Info memory"
                                }
                              },
                              "id": 21512,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "number",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 24850,
                              "src": "6462:24:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_30fd012e2a1e1627dd44deca016bdb3f35adc2a996405399373222b6ad12b213",
                                "typeString": "literal_string \"Unvaporizable account\""
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21496,
                              "name": "Require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28452,
                              "src": "6265:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                                "typeString": "type(library Require)"
                              }
                            },
                            "id": 21498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "that",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27972,
                            "src": "6265:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (bool,bytes32,bytes32,address,uint256) pure"
                            }
                          },
                          "id": 21513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6265:235:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21514,
                        "nodeType": "ExpressionStatement",
                        "src": "6265:235:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21518,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "6530:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21519,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "6530:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21520,
                                  "name": "Account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24885,
                                  "src": "6549:7:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                                    "typeString": "type(library Account)"
                                  }
                                },
                                "id": 21521,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "Status",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 24846,
                                "src": "6549:14:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Status_$24846_$",
                                  "typeString": "type(enum Account.Status)"
                                }
                              },
                              "id": 21522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Vapor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6549:20:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_enum$_Status_$24846",
                                "typeString": "enum Account.Status"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21515,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "6514:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21517,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setStatus",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30275,
                            "src": "6514:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_enum$_Status_$24846_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,enum Account.Status)"
                            }
                          },
                          "id": 21523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6514:56:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21524,
                        "nodeType": "ExpressionStatement",
                        "src": "6514:56:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21528,
                    21530
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21528,
                      "name": "fullyRepaid",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "6775:16:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 21527,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "6775:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21530,
                      "name": "excessWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "6805:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21529,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "6805:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21541,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21532,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "6865:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21533,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21475,
                        "src": "6872:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21536,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "6888:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21537,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "6888:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21534,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "6878:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21535,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "6878:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6878:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21539,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "6878:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "id": 21531,
                      "name": "_vaporizeUsingExcess",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21870,
                      "src": "6844:20:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Interest.Index memory) returns (bool,struct Types.Wei memory)"
                      }
                    },
                    "id": 21540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6844:67:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(bool,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6761:150:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21542,
                    "name": "fullyRepaid",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 21528,
                    "src": "6925:11:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21559,
                  "nodeType": "IfStatement",
                  "src": "6921:232:72",
                  "trueBody": {
                    "id": 21558,
                    "nodeType": "Block",
                    "src": "6938:215:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21546,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "6988:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21547,
                              "name": "args",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21475,
                              "src": "7011:4:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                "typeString": "struct Actions.VaporizeArgs memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21548,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7033:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "7033:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21550,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7033:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21551,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "7066:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "7066:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7066:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21554,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21530,
                              "src": "7099:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              },
                              {
                                "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                "typeString": "struct Actions.VaporizeArgs memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21543,
                              "name": "Events",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 27153,
                              "src": "6952:6:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                                "typeString": "type(library Events)"
                              }
                            },
                            "id": 21545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "logVaporize",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27129,
                            "src": "6952:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                              "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Types.Wei memory,struct Types.Wei memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6952:170:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21556,
                        "nodeType": "ExpressionStatement",
                        "src": "6952:170:72"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 21477,
                        "id": 21557,
                        "nodeType": "Return",
                        "src": "7136:7:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21563
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21563,
                      "name": "maxHeldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7163:27:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21562,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "7163:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21569,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21566,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7218:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21567,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "7218:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21564,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7193:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNumExcessTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28912,
                      "src": "7193:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7193:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7163:71:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "7271:24:72",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21573,
                              "name": "maxHeldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21563,
                              "src": "7272:10:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21574,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isNegative",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31331,
                            "src": "7272:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                              "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                            }
                          },
                          "id": 21575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7272:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21577,
                        "name": "FILE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21158,
                        "src": "7309:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4578636573732063616e6e6f74206265206e65676174697665",
                        "id": 21578,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7327:27:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_a33eabdef9e311027802e848a7fd85ef6fd47e582873d5946a8db902cade8df7",
                          "typeString": "literal_string \"Excess cannot be negative\""
                        },
                        "value": "Excess cannot be negative"
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21579,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7368:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21580,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "7368:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_a33eabdef9e311027802e848a7fd85ef6fd47e582873d5946a8db902cade8df7",
                          "typeString": "literal_string \"Excess cannot be negative\""
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21570,
                        "name": "Require",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28452,
                        "src": "7245:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Require_$28452_$",
                          "typeString": "type(library Require)"
                        }
                      },
                      "id": 21572,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "that",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27852,
                      "src": "7245:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (bool,bytes32,bytes32,uint256) pure"
                      }
                    },
                    "id": 21581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7245:148:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21582,
                  "nodeType": "ExpressionStatement",
                  "src": "7245:148:72"
                },
                {
                  "assignments": [
                    21586,
                    21588
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21586,
                      "name": "owedPar",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7418:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                        "typeString": "struct Types.Par"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21585,
                        "name": "Types.Par",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 30890,
                        "src": "7418:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Par_$30890_storage_ptr",
                          "typeString": "struct Types.Par"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21588,
                      "name": "owedWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7456:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21587,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "7456:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21604,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21591,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7547:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21592,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "7547:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21593,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7578:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21594,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "7578:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21597,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "7617:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21598,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "7617:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21595,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "7607:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21596,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "7607:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21599,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7607:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21600,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "7607:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21601,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "7653:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21602,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25013,
                        "src": "7653:11:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$30880_memory",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21589,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7493:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21590,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNewParAndDeltaWeiForLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30069,
                      "src": "7493:40:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_AssetAmount_$30880_memory_ptr_$returns$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.AssetAmount memory) view returns (struct Types.Par memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7493:181:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Par_$30890_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$",
                      "typeString": "tuple(struct Types.Par memory,struct Types.Wei memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7404:270:72"
                },
                {
                  "assignments": [
                    21608,
                    21610
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21608,
                      "name": "heldPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7795:31:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21607,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "7795:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 21610,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "7840:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21609,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "7840:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21626,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21612,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "7922:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21613,
                        "name": "cache",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21473,
                        "src": "7941:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 21617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8003:1:72",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 21616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7995:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 21618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7995:10:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 21619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8007:1:72",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21614,
                            "name": "Account",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24885,
                            "src": "7982:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Account_$24885_$",
                              "typeString": "type(library Account)"
                            }
                          },
                          "id": 21615,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "Info",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 24851,
                          "src": "7982:12:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_Info_$24851_storage_ptr_$",
                            "typeString": "type(struct Account.Info storage pointer)"
                          }
                        },
                        "id": 21620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7982:27:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21621,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8058:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21622,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "8058:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21623,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8087:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21624,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "8087:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                          "typeString": "struct Cache.MarketCache memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 21611,
                      "name": "_getLiquidationPrices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21984,
                      "src": "7887:21:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_MarketCache_$25696_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Cache.MarketCache memory,struct Account.Info memory,uint256,uint256) view returns (struct Monetary.Price memory,struct Monetary.Price memory)"
                      }
                    },
                    "id": 21625,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7887:225:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7781:331:72"
                },
                {
                  "assignments": [
                    21630
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21630,
                      "name": "heldWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "8123:24:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21629,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "8123:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21636,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21632,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "8168:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21633,
                        "name": "heldPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21608,
                        "src": "8177:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21634,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21610,
                        "src": "8188:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      ],
                      "id": 21631,
                      "name": "_owedWeiToHeldWei",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 21922,
                      "src": "8150:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                        "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8150:51:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8123:78:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21637,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21630,
                        "src": "8296:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21638,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "8296:13:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21639,
                        "name": "maxHeldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21563,
                        "src": "8312:10:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21640,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "8312:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8296:32:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21683,
                    "nodeType": "Block",
                    "src": "8663:144:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21676,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8707:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21677,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "8707:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21678,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8742:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21679,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8742:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21680,
                              "name": "owedPar",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21586,
                              "src": "8775:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21673,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "8677:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21675,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "8677:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8677:119:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21682,
                        "nodeType": "ExpressionStatement",
                        "src": "8677:119:72"
                      }
                    ]
                  },
                  "id": 21684,
                  "nodeType": "IfStatement",
                  "src": "8292:515:72",
                  "trueBody": {
                    "id": 21672,
                    "nodeType": "Block",
                    "src": "8330:327:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21642,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "8344:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21643,
                                "name": "maxHeldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21563,
                                "src": "8354:10:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              "id": 21644,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "negative",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 31314,
                              "src": "8354:19:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21645,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8354:21:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "8344:31:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21647,
                        "nodeType": "ExpressionStatement",
                        "src": "8344:31:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 21654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 21648,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "8389:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21650,
                                "name": "heldWei",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21630,
                                "src": "8417:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21651,
                                "name": "heldPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21608,
                                "src": "8426:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21652,
                                "name": "owedPriceAdj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21610,
                                "src": "8437:12:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                  "typeString": "struct Types.Wei memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                },
                                {
                                  "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                  "typeString": "struct Monetary.Price memory"
                                }
                              ],
                              "id": 21649,
                              "name": "_heldWeiToOwedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21896,
                              "src": "8399:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$_t_struct$_Price_$27756_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                "typeString": "function (struct Types.Wei memory,struct Monetary.Price memory,struct Monetary.Price memory) pure returns (struct Types.Wei memory)"
                              }
                            },
                            "id": 21653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8399:51:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "src": "8389:61:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21655,
                        "nodeType": "ExpressionStatement",
                        "src": "8389:61:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21659,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8507:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21660,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "8507:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21661,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8542:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21662,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8542:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 21665,
                                      "name": "args",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 21475,
                                      "src": "8585:4:72",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                        "typeString": "struct Actions.VaporizeArgs memory"
                                      }
                                    },
                                    "id": 21666,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "owedMarket",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 25019,
                                    "src": "8585:15:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 21663,
                                    "name": "cache",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 21473,
                                    "src": "8575:5:72",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                      "typeString": "struct Cache.MarketCache memory"
                                    }
                                  },
                                  "id": 21664,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "get",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 25778,
                                  "src": "8575:9:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                                    "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                                  }
                                },
                                "id": 21667,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8575:26:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                                  "typeString": "struct Cache.MarketInfo memory"
                                }
                              },
                              "id": 21668,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "index",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25682,
                              "src": "8575:32:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21669,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21588,
                              "src": "8625:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21656,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21471,
                              "src": "8465:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21658,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "8465:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21670,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8465:181:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21671,
                        "nodeType": "ExpressionStatement",
                        "src": "8465:181:72"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21688,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8905:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21689,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "8905:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21690,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "8936:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21691,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "8936:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21694,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "8975:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "8975:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21692,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "8965:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21693,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "8965:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21696,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8965:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21697,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "8965:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21698,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "9011:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9011:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21700,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9011:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21685,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "8867:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21687,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "8867:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8867:172:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21702,
                  "nodeType": "ExpressionStatement",
                  "src": "8867:172:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21706,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9087:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21707,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9087:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21708,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9118:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21709,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9118:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21712,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21475,
                                "src": "9157:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21713,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "heldMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25021,
                              "src": "9157:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21710,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21473,
                              "src": "9147:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21711,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "9147:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9147:26:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21715,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "index",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25682,
                        "src": "9147:32:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21716,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "9193:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21717,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9193:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9193:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory",
                          "typeString": "struct Interest.Index memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21703,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9049:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21705,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setParFromDeltaWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 30560,
                      "src": "9049:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9049:172:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21720,
                  "nodeType": "ExpressionStatement",
                  "src": "9049:172:72"
                },
                {
                  "assignments": [
                    21722
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21722,
                      "name": "callbackGasLimit",
                      "nodeType": "VariableDeclaration",
                      "scope": 21775,
                      "src": "9232:24:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21721,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9232:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21726,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21723,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9259:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21724,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "riskParams",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28757,
                      "src": "9259:16:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_RiskParams_$28710_storage",
                        "typeString": "struct Storage.RiskParams storage ref"
                      }
                    },
                    "id": 21725,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "callbackGasLimit",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 28703,
                    "src": "9259:33:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9232:60:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21730,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9373:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21731,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "9373:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21732,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9404:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21733,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9404:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21734,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9435:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21735,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9435:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21736,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 31361,
                            "src": "9464:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 21737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "zeroWei",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31160,
                          "src": "9464:13:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function () pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21738,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9464:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21739,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9493:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21740,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "9493:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21741,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "9522:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21742,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21722,
                        "src": "9543:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21727,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "9302:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21729,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "9302:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21743,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9302:267:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21744,
                  "nodeType": "ExpressionStatement",
                  "src": "9302:267:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21748,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9650:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21749,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "solidAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25015,
                        "src": "9650:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21750,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9681:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21751,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "9681:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21752,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9712:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21753,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "heldMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25021,
                        "src": "9712:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21754,
                            "name": "heldWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21630,
                            "src": "9741:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21755,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9741:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21756,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9741:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21757,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21475,
                          "src": "9773:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21758,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "9773:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21759,
                            "name": "owedWei",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21588,
                            "src": "9802:7:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                              "typeString": "struct Types.Wei memory"
                            }
                          },
                          "id": 21760,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "negative",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 31314,
                          "src": "9802:16:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "function (struct Types.Wei memory) pure returns (struct Types.Wei memory)"
                          }
                        },
                        "id": 21761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9802:18:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21762,
                        "name": "callbackGasLimit",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21722,
                        "src": "9834:16:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21745,
                        "name": "SafeExternalCallback",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 28603,
                        "src": "9579:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeExternalCallback_$28603_$",
                          "typeString": "type(library SafeExternalCallback)"
                        }
                      },
                      "id": 21747,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "callInternalBalanceChangeIfNecessary",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28602,
                      "src": "9579:57:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$24851_memory_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$_t_struct$_Wei_$31149_memory_ptr_$_t_uint256_$returns$__$",
                        "typeString": "function (struct Account.Info memory,struct Account.Info memory,uint256,struct Types.Wei memory,uint256,struct Types.Wei memory,uint256)"
                      }
                    },
                    "id": 21763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9579:281:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21764,
                  "nodeType": "ExpressionStatement",
                  "src": "9579:281:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21768,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21471,
                        "src": "9903:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21769,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21475,
                        "src": "9922:4:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21770,
                        "name": "heldWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21630,
                        "src": "9940:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21771,
                        "name": "owedWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21588,
                        "src": "9961:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21772,
                        "name": "excessWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21530,
                        "src": "9982:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        },
                        {
                          "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                          "typeString": "struct Actions.VaporizeArgs memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        },
                        {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21765,
                        "name": "Events",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27153,
                        "src": "9871:6:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Events_$27153_$",
                          "typeString": "type(library Events)"
                        }
                      },
                      "id": 21767,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logVaporize",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27129,
                      "src": "9871:18:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_VaporizeArgs_$25022_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$",
                        "typeString": "function (struct Storage.State storage pointer,struct Actions.VaporizeArgs memory,struct Types.Wei memory,struct Types.Wei memory,struct Types.Wei memory)"
                      }
                    },
                    "id": 21773,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9871:130:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 21774,
                  "nodeType": "ExpressionStatement",
                  "src": "9871:130:72"
                }
              ]
            },
            "documentation": null,
            "id": 21776,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "vaporize",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21476,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21471,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "5951:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21470,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "5951:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21473,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "5988:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21472,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "5988:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21475,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21776,
                  "src": "6028:32:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                    "typeString": "struct Actions.VaporizeArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21474,
                    "name": "Actions.VaporizeArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25022,
                    "src": "6028:20:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_storage_ptr",
                      "typeString": "struct Actions.VaporizeArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5941:125:72"
            },
            "returnParameters": {
              "id": 21477,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6082:0:72"
            },
            "scope": 21985,
            "src": "5924:4084:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 21869,
              "nodeType": "Block",
              "src": "10562:1034:72",
              "statements": [
                {
                  "assignments": [
                    21792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21792,
                      "name": "excessWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21869,
                      "src": "10572:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21791,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "10572:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21798,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21795,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10626:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21796,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "10626:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21793,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21778,
                        "src": "10601:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21794,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getNumExcessTokens",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28912,
                      "src": "10601:24:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_uint256_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,uint256) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21797,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10601:41:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10572:70:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 21802,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "10707:23:72",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 21799,
                          "name": "excessWei",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21792,
                          "src": "10708:9:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                            "typeString": "struct Types.Wei memory"
                          }
                        },
                        "id": 21800,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "isPositive",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 31347,
                        "src": "10708:20:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Wei_$31149_memory_ptr_$returns$_t_bool_$bound_to$_t_struct$_Wei_$31149_memory_ptr_$",
                          "typeString": "function (struct Types.Wei memory) pure returns (bool)"
                        }
                      },
                      "id": 21801,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "10708:22:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 21810,
                  "nodeType": "IfStatement",
                  "src": "10703:85:72",
                  "trueBody": {
                    "id": 21809,
                    "nodeType": "Block",
                    "src": "10732:56:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 21803,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10754:5:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21804,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "10761:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21805,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroWei",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 31160,
                                "src": "10761:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Wei_$31149_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Wei memory)"
                                }
                              },
                              "id": 21806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10761:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21807,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "10753:24:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21808,
                        "nodeType": "Return",
                        "src": "10746:31:72"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    21814
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21814,
                      "name": "maxRefundWei",
                      "nodeType": "VariableDeclaration",
                      "scope": 21869,
                      "src": "10798:29:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                        "typeString": "struct Types.Wei"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21813,
                        "name": "Types.Wei",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 31149,
                        "src": "10798:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                          "typeString": "struct Types.Wei"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21823,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21817,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10856:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21818,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vaporAccount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25017,
                        "src": "10856:17:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 21819,
                          "name": "args",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21780,
                          "src": "10887:4:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                            "typeString": "struct Actions.VaporizeArgs memory"
                          }
                        },
                        "id": 21820,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "owedMarket",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25019,
                        "src": "10887:15:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21821,
                        "name": "owedIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21782,
                        "src": "10916:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                          "typeString": "struct Interest.Index memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21815,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21778,
                        "src": "10830:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21816,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getWei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 28995,
                      "src": "10830:12:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$returns$_t_struct$_Wei_$31149_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory) view returns (struct Types.Wei memory)"
                      }
                    },
                    "id": 21822,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10830:105:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10798:137:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 21828,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21824,
                        "name": "maxRefundWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21814,
                        "src": "10945:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21826,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "sign",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31146,
                      "src": "10945:17:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 21827,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10965:4:72",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "10945:24:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 21829,
                  "nodeType": "ExpressionStatement",
                  "src": "10945:24:72"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 21834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21830,
                        "name": "excessWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21792,
                        "src": "11047:9:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21831,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "11047:15:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 21832,
                        "name": "maxRefundWei",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21814,
                        "src": "11066:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                          "typeString": "struct Types.Wei memory"
                        }
                      },
                      "id": 21833,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "value",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31148,
                      "src": "11066:18:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11047:37:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 21867,
                    "nodeType": "Block",
                    "src": "11366:224:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21855,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11422:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21856,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "11422:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21857,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11457:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21858,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "11457:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21859,
                              "name": "owedIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21782,
                              "src": "11490:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 21860,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21792,
                              "src": "11517:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                                "typeString": "struct Interest.Index memory"
                              },
                              {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21852,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21778,
                              "src": "11380:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21854,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setParFromDeltaWei",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30560,
                            "src": "11380:24:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Index_$27471_memory_ptr_$_t_struct$_Wei_$31149_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Interest.Index memory,struct Types.Wei memory)"
                            }
                          },
                          "id": 21861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11380:160:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21862,
                        "nodeType": "ExpressionStatement",
                        "src": "11380:160:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 21863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11562:5:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "argumentTypes": null,
                              "id": 21864,
                              "name": "excessWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21792,
                              "src": "11569:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21865,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11561:18:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21866,
                        "nodeType": "Return",
                        "src": "11554:25:72"
                      }
                    ]
                  },
                  "id": 21868,
                  "nodeType": "IfStatement",
                  "src": "11043:547:72",
                  "trueBody": {
                    "id": 21851,
                    "nodeType": "Block",
                    "src": "11086:193:72",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21838,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11130:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21839,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "vaporAccount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25017,
                              "src": "11130:17:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 21840,
                                "name": "args",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21780,
                                "src": "11165:4:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                                  "typeString": "struct Actions.VaporizeArgs memory"
                                }
                              },
                              "id": 21841,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owedMarket",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 25019,
                              "src": "11165:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 21842,
                                  "name": "Types",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 31361,
                                  "src": "11198:5:72",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                                    "typeString": "type(library Types)"
                                  }
                                },
                                "id": 21843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "zeroPar",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 30901,
                                "src": "11198:13:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_Par_$30890_memory_ptr_$",
                                  "typeString": "function () pure returns (struct Types.Par memory)"
                                }
                              },
                              "id": 21844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11198:15:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Info_$24851_memory",
                                "typeString": "struct Account.Info memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_struct$_Par_$30890_memory_ptr",
                                "typeString": "struct Types.Par memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21835,
                              "name": "state",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21778,
                              "src": "11100:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                                "typeString": "struct Storage.State storage pointer"
                              }
                            },
                            "id": 21837,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "setPar",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 30502,
                            "src": "11100:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_struct$_Par_$30890_memory_ptr_$returns$__$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                              "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,struct Types.Par memory)"
                            }
                          },
                          "id": 21845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11100:127:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 21846,
                        "nodeType": "ExpressionStatement",
                        "src": "11100:127:72"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 21847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11249:4:72",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "argumentTypes": null,
                              "id": 21848,
                              "name": "maxRefundWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21814,
                              "src": "11255:12:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            }
                          ],
                          "id": 21849,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11248:20:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_struct$_Wei_$31149_memory_ptr_$",
                            "typeString": "tuple(bool,struct Types.Wei memory)"
                          }
                        },
                        "functionReturnParameters": 21788,
                        "id": 21850,
                        "nodeType": "Return",
                        "src": "11241:27:72"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "Attempt to vaporize an account's balance using the excess tokens in the protocol. Return a\nbool and a wei value. The boolean is true if and only if the balance was fully vaporized. The\nWei value is how many excess tokens were used to partially or fully vaporize the account's\nnegative balance.",
            "id": 21870,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_vaporizeUsingExcess",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21783,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21778,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10391:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21777,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "10391:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21780,
                  "name": "args",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10428:32:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_VaporizeArgs_$25022_memory_ptr",
                    "typeString": "struct Actions.VaporizeArgs"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21779,
                    "name": "Actions.VaporizeArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25022,
                    "src": "10428:20:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_VaporizeArgs_$25022_storage_ptr",
                      "typeString": "struct Actions.VaporizeArgs"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21782,
                  "name": "owedIndex",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10470:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Index_$27471_memory_ptr",
                    "typeString": "struct Interest.Index"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21781,
                    "name": "Interest.Index",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27471,
                    "src": "10470:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Index_$27471_storage_ptr",
                      "typeString": "struct Interest.Index"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10381:126:72"
            },
            "returnParameters": {
              "id": 21788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21785,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10534:4:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 21784,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10534:4:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21787,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21870,
                  "src": "10540:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21786,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "10540:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10533:24:72"
            },
            "scope": 21985,
            "src": "10352:1244:72",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21895,
              "nodeType": "Block",
              "src": "11992:175:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 21883,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12039:4:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21886,
                              "name": "heldWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21872,
                              "src": "12101:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21887,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31148,
                            "src": "12101:13:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21888,
                              "name": "heldPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21874,
                              "src": "12116:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21889,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12116:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21890,
                              "name": "owedPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21876,
                              "src": "12133:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21891,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12133:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21884,
                            "name": "DolomiteMarginMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26238,
                            "src": "12064:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                              "typeString": "type(library DolomiteMarginMath)"
                            }
                          },
                          "id": 21885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPartialRoundUp",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26097,
                          "src": "12064:36:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21892,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12064:85:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21881,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31361,
                        "src": "12009:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 21882,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Wei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31149,
                      "src": "12009:9:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Wei_$31149_storage_ptr_$",
                        "typeString": "type(struct Types.Wei storage pointer)"
                      }
                    },
                    "id": 21893,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "sign",
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "12009:151:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "functionReturnParameters": 21880,
                  "id": 21894,
                  "nodeType": "Return",
                  "src": "12002:158:72"
                }
              ]
            },
            "documentation": "For the purposes of liquidation or vaporization, get the value-equivalent amount of owedWei\ngiven heldWei and the (spread-adjusted) prices of each asset.",
            "id": 21896,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_heldWeiToOwedWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21877,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21872,
                  "name": "heldWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11822:24:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21871,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "11822:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21874,
                  "name": "heldPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11856:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21873,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "11856:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21876,
                  "name": "owedPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11897:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21875,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "11897:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11812:122:72"
            },
            "returnParameters": {
              "id": 21880,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21879,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21896,
                  "src": "11970:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21878,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "11970:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11969:18:72"
            },
            "scope": 21985,
            "src": "11786:381:72",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21921,
              "nodeType": "Block",
              "src": "12563:169:72",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 21909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12610:5:72",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21912,
                              "name": "owedWei",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21898,
                              "src": "12666:7:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                                "typeString": "struct Types.Wei memory"
                              }
                            },
                            "id": 21913,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31148,
                            "src": "12666:13:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21914,
                              "name": "owedPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21902,
                              "src": "12681:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21915,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12681:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 21916,
                              "name": "heldPrice",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21900,
                              "src": "12698:9:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                                "typeString": "struct Monetary.Price memory"
                              }
                            },
                            "id": 21917,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 27755,
                            "src": "12698:15:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21910,
                            "name": "DolomiteMarginMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26238,
                            "src": "12636:18:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_DolomiteMarginMath_$26238_$",
                              "typeString": "type(library DolomiteMarginMath)"
                            }
                          },
                          "id": 21911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPartial",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 26056,
                          "src": "12636:29:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21918,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12636:78:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21907,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31361,
                        "src": "12580:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$31361_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 21908,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Wei",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31149,
                      "src": "12580:9:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Wei_$31149_storage_ptr_$",
                        "typeString": "type(struct Types.Wei storage pointer)"
                      }
                    },
                    "id": 21919,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "sign",
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "12580:145:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_memory",
                      "typeString": "struct Types.Wei memory"
                    }
                  },
                  "functionReturnParameters": 21906,
                  "id": 21920,
                  "nodeType": "Return",
                  "src": "12573:152:72"
                }
              ]
            },
            "documentation": "For the purposes of liquidation or vaporization, get the value-equivalent amount of heldWei\ngiven owedWei and the (spread-adjusted) prices of each asset.",
            "id": 21922,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_owedWeiToHeldWei",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21903,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21898,
                  "name": "owedWei",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12393:24:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21897,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "12393:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21900,
                  "name": "heldPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12427:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21899,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "12427:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21902,
                  "name": "owedPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12468:31:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21901,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "12468:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12383:122:72"
            },
            "returnParameters": {
              "id": 21906,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21905,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21922,
                  "src": "12541:16:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Wei_$31149_memory_ptr",
                    "typeString": "struct Types.Wei"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21904,
                    "name": "Types.Wei",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 31149,
                    "src": "12541:9:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Wei_$31149_storage_ptr",
                      "typeString": "struct Types.Wei"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12540:18:72"
            },
            "scope": 21985,
            "src": "12357:375:72",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 21983,
              "nodeType": "Block",
              "src": "13191:446:72",
              "statements": [
                {
                  "assignments": [
                    21940
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21940,
                      "name": "owedPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13201:17:72",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 21939,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "13201:7:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21947,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 21943,
                            "name": "owedMarketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21932,
                            "src": "13231:12:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21941,
                            "name": "cache",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21926,
                            "src": "13221:5:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                              "typeString": "struct Cache.MarketCache memory"
                            }
                          },
                          "id": 21942,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "get",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 25778,
                          "src": "13221:9:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                            "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                          }
                        },
                        "id": 21944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13221:23:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                          "typeString": "struct Cache.MarketInfo memory"
                        }
                      },
                      "id": 21945,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 25684,
                      "src": "13221:29:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory",
                        "typeString": "struct Monetary.Price memory"
                      }
                    },
                    "id": 21946,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 27755,
                    "src": "13221:35:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13201:55:72"
                },
                {
                  "assignments": [
                    21951
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21951,
                      "name": "spread",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13266:26:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                        "typeString": "struct Decimal.D256"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21950,
                        "name": "Decimal.D256",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 25950,
                        "src": "13266:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_D256_$25950_storage_ptr",
                          "typeString": "struct Decimal.D256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21958,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 21954,
                        "name": "liquidAccount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21928,
                        "src": "13352:13:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21955,
                        "name": "heldMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21930,
                        "src": "13379:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21956,
                        "name": "owedMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21932,
                        "src": "13405:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                          "typeString": "struct Account.Info memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21952,
                        "name": "state",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21924,
                        "src": "13295:5:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                          "typeString": "struct Storage.State storage pointer"
                        }
                      },
                      "id": 21953,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getLiquidationSpreadForAccountAndPair",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 29158,
                      "src": "13295:43:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_State_$28760_storage_ptr_$_t_struct$_Info_$24851_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_struct$_D256_$25950_memory_ptr_$bound_to$_t_struct$_State_$28760_storage_ptr_$",
                        "typeString": "function (struct Storage.State storage pointer,struct Account.Info memory,uint256,uint256) view returns (struct Decimal.D256 memory)"
                      }
                    },
                    "id": 21957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13295:132:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                      "typeString": "struct Decimal.D256 memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13266:161:72"
                },
                {
                  "assignments": [
                    21962
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 21962,
                      "name": "owedPriceAdj",
                      "nodeType": "VariableDeclaration",
                      "scope": 21983,
                      "src": "13438:34:72",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                        "typeString": "struct Monetary.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 21961,
                        "name": "Monetary.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 27756,
                        "src": "13438:14:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                          "typeString": "struct Monetary.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 21974,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 21969,
                                "name": "owedPrice",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21940,
                                "src": "13537:9:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 21970,
                                "name": "spread",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 21951,
                                "src": "13548:6:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                                  "typeString": "struct Decimal.D256 memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_struct$_D256_$25950_memory_ptr",
                                  "typeString": "struct Decimal.D256 memory"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 21967,
                                "name": "Decimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 26023,
                                "src": "13525:7:72",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Decimal_$26023_$",
                                  "typeString": "type(library Decimal)"
                                }
                              },
                              "id": 21968,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 26004,
                              "src": "13525:11:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_struct$_D256_$25950_memory_ptr_$returns$_t_uint256_$",
                                "typeString": "function (uint256,struct Decimal.D256 memory) pure returns (uint256)"
                              }
                            },
                            "id": 21971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "13525:30:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 21965,
                            "name": "owedPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 21940,
                            "src": "13511:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 21966,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 37205,
                          "src": "13511:13:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 21972,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13511:45:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 21963,
                        "name": "Monetary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 27760,
                        "src": "13475:8:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Monetary_$27760_$",
                          "typeString": "type(library Monetary)"
                        }
                      },
                      "id": 21964,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "Price",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 27756,
                      "src": "13475:14:72",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Price_$27756_storage_ptr_$",
                        "typeString": "type(struct Monetary.Price storage pointer)"
                      }
                    },
                    "id": 21973,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "value"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "13475:92:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_memory",
                      "typeString": "struct Monetary.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13438:129:72"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 21977,
                              "name": "heldMarketId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21930,
                              "src": "13596:12:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 21975,
                              "name": "cache",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 21926,
                              "src": "13586:5:72",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                                "typeString": "struct Cache.MarketCache memory"
                              }
                            },
                            "id": 21976,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "get",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 25778,
                            "src": "13586:9:72",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_MarketCache_$25696_memory_ptr_$_t_uint256_$returns$_t_struct$_MarketInfo_$25685_memory_ptr_$bound_to$_t_struct$_MarketCache_$25696_memory_ptr_$",
                              "typeString": "function (struct Cache.MarketCache memory,uint256) pure returns (struct Cache.MarketInfo memory)"
                            }
                          },
                          "id": 21978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13586:23:72",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_MarketInfo_$25685_memory_ptr",
                            "typeString": "struct Cache.MarketInfo memory"
                          }
                        },
                        "id": 21979,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "price",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 25684,
                        "src": "13586:29:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory",
                          "typeString": "struct Monetary.Price memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 21980,
                        "name": "owedPriceAdj",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 21962,
                        "src": "13617:12:72",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                          "typeString": "struct Monetary.Price memory"
                        }
                      }
                    ],
                    "id": 21981,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "13585:45:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_struct$_Price_$27756_memory_$_t_struct$_Price_$27756_memory_ptr_$",
                      "typeString": "tuple(struct Monetary.Price memory,struct Monetary.Price memory)"
                    }
                  },
                  "functionReturnParameters": 21938,
                  "id": 21982,
                  "nodeType": "Return",
                  "src": "13578:52:72"
                }
              ]
            },
            "documentation": "Return the (spread-adjusted) prices of two assets for the purposes of liquidation or\nvaporization.",
            "id": 21984,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getLiquidationPrices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 21933,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21924,
                  "name": "state",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12907:27:72",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                    "typeString": "struct Storage.State"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21923,
                    "name": "Storage.State",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 28760,
                    "src": "12907:13:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_State_$28760_storage_ptr",
                      "typeString": "struct Storage.State"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21926,
                  "name": "cache",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12944:30:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_MarketCache_$25696_memory_ptr",
                    "typeString": "struct Cache.MarketCache"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21925,
                    "name": "Cache.MarketCache",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 25696,
                    "src": "12944:17:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_MarketCache_$25696_storage_ptr",
                      "typeString": "struct Cache.MarketCache"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21928,
                  "name": "liquidAccount",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "12984:33:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Info_$24851_memory_ptr",
                    "typeString": "struct Account.Info"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21927,
                    "name": "Account.Info",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 24851,
                    "src": "12984:12:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Info_$24851_storage_ptr",
                      "typeString": "struct Account.Info"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21930,
                  "name": "heldMarketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13027:20:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21929,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13027:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21932,
                  "name": "owedMarketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13057:20:72",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21931,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13057:7:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12897:186:72"
            },
            "returnParameters": {
              "id": 21938,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 21935,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13128:21:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21934,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "13128:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21937,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 21984,
                  "src": "13159:21:72",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$27756_memory_ptr",
                    "typeString": "struct Monetary.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21936,
                    "name": "Monetary.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 27756,
                    "src": "13159:14:72",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$27756_storage_ptr",
                      "typeString": "struct Monetary.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13118:68:72"
            },
            "scope": 21985,
            "src": "12867:770:72",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 21986,
        "src": "1564:12075:72"
      }
    ],
    "src": "594:13046:72"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.16+commit.9c3226ce.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.23",
  "updatedAt": "2026-03-02T16:38:28.850Z",
  "devdoc": {
    "details": "A library that combines shares code for executing Liquidation or Vaporization actions.",
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}