{
  "_format": "hh-sol-artifact-1",
  "contractName": "AaveEcosystemReserveV2",
  "sourceName": "contracts/treasury/AaveEcosystemReserveV2.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "senderBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "recipientBalance",
          "type": "uint256"
        }
      ],
      "name": "CancelStream",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "deposit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "stopTime",
          "type": "uint256"
        }
      ],
      "name": "CreateStream",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "fundsAdmin",
          "type": "address"
        }
      ],
      "name": "NewFundsAdmin",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawFromStream",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "ETH_MOCK_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "REVISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        }
      ],
      "name": "cancelStream",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deposit",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "stopTime",
          "type": "uint256"
        }
      ],
      "name": "createStream",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        }
      ],
      "name": "deltaOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "delta",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getFundsAdmin",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextStreamId",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        }
      ],
      "name": "getStream",
      "outputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "deposit",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "stopTime",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remainingBalance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "ratePerSecond",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "fundsAdmin",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "streamId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawFromStream",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60806040526000805534801561001457600080fd5b506001603455612210806100296000396000f3fe6080604052600436106100d65760003560e01c8063894e9a0d1161007f578063c4d66de811610059578063c4d66de8146102a4578063cc1b4bf6146102c4578063dde43cba146102e4578063e1f21c67146102f957600080fd5b8063894e9a0d146101ea578063a82ccd4d14610262578063beabacc81461028257600080fd5b806351ee886b116100b057806351ee886b146101725780636db9241b1461019a5780637a9b2c6c146101ca57600080fd5b806306bc2ee0146100e25780630932f92b146101335780633656eec21461015257600080fd5b366100dd57005b600080fd5b3480156100ee57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561013f57600080fd5b506035545b60405190815260200161012a565b34801561015e57600080fd5b5061014461016d366004611ed4565b610319565b34801561017e57600080fd5b5061010973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156101a657600080fd5b506101ba6101b5366004611f04565b610559565b604051901515815260200161012a565b3480156101d657600080fd5b506101ba6101e5366004611f1d565b61090a565b3480156101f657600080fd5b5061020a610205366004611f04565b610d72565b6040805173ffffffffffffffffffffffffffffffffffffffff998a1681529789166020890152870195909552959092166060850152608084015260a083015260c082019290925260e08101919091526101000161012a565b34801561026e57600080fd5b5061014461027d366004611f04565b610e58565b34801561028e57600080fd5b506102a261029d366004611f3f565b610fd2565b005b3480156102b057600080fd5b506102a26102bf366004611f80565b611114565b3480156102d057600080fd5b506101446102df366004611f9d565b6111a7565b3480156102f057600080fd5b50610144600181565b34801561030557600080fd5b506102a2610314366004611f3f565b6117b0565b600082815260366020526040812060070154839074010000000000000000000000000000000000000000900460ff166103995760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f74206578697374000000000000000000000060448201526064015b60405180910390fd5b600084815260366020908152604080832081516101208101835281548152600182015481850152600282015481840152600382015460608083019190915260048301546080830152600583015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006840154811660c084015260079093015492831660e08301527401000000000000000000000000000000000000000090920460ff161515610100820152825191820183528482529281018490529081019290925290600061046487610e58565b9050826020015181610476919061201e565b82526040830151835111156104ac5760408301518351610496919061205b565b6020830181905282516104a9919061205b565b82525b8260a0015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104ef57505192506105529050565b8260c0015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561054a5781516040840151610538919061205b565b60409092018290525092506105529050565b600094505050505b5092915050565b6000600260345414156105ae5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610390565b6002603455600082815260366020526040902060070154829074010000000000000000000000000000000000000000900460ff1661062e5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b603354839073ffffffffffffffffffffffffffffffffffffffff1633148061067c575060008181526036602052604090206005015473ffffffffffffffffffffffffffffffffffffffff1633145b6106ee5760405162461bcd60e51b815260206004820152603c60248201527f63616c6c6572206973206e6f74207468652066756e64732061646d696e206f7260448201527f2074686520726563697069656e74206f66207468652073747265616d000000006064820152608401610390565b6000848152603660209081526040808320815161012081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006820154811660c0840181905260079092015490811660e084015274010000000000000000000000000000000000000000900460ff1615156101008301529091906107a7908790610319565b905060006107b9878460a00151610319565b600088815260366020526040812081815560018101829055600281018290556003810182905560048101919091556005810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155600682018054909116905560070180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560e0840151909150811561087d5760a084015161087d9073ffffffffffffffffffffffffffffffffffffffff83169084611838565b8360a0015173ffffffffffffffffffffffffffffffffffffffff168460c0015173ffffffffffffffffffffffffffffffffffffffff16897fca3e6079b726e7728802a0537949e2d1c7762304fa641fb06eb56daf2ba8c6b986866040516108ee929190918252602082015260400190565b60405180910390a4600196505050505050506001603455919050565b60006002603454141561095f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610390565b6002603455600083815260366020526040902060070154839074010000000000000000000000000000000000000000900460ff166109df5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b603354849073ffffffffffffffffffffffffffffffffffffffff16331480610a2d575060008181526036602052604090206005015473ffffffffffffffffffffffffffffffffffffffff1633145b610a9f5760405162461bcd60e51b815260206004820152603c60248201527f63616c6c6572206973206e6f74207468652066756e64732061646d696e206f7260448201527f2074686520726563697069656e74206f66207468652073747265616d000000006064820152608401610390565b60008411610aef5760405162461bcd60e51b815260206004820152600e60248201527f616d6f756e74206973207a65726f0000000000000000000000000000000000006044820152606401610390565b6000858152603660209081526040808320815161012081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015473ffffffffffffffffffffffffffffffffffffffff90811660a084018190526006830154821660c085015260079092015490811660e084015274010000000000000000000000000000000000000000900460ff161515610100830152909190610ba8908890610319565b905085811015610c1f5760405162461bcd60e51b8152602060048201526024808201527f616d6f756e7420657863656564732074686520617661696c61626c652062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610390565b858260400151610c2f919061205b565b6000888152603660205260409020600201819055610cd757600087815260366020526040812081815560018101829055600281018290556003810182905560048101919091556005810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155600682018054909116905560070180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555b610d0a8260a00151878460e0015173ffffffffffffffffffffffffffffffffffffffff166118389092919063ffffffff16565b8160a0015173ffffffffffffffffffffffffffffffffffffffff16877f36c3ab437e6a424ed25dc4bfdeb62706aa06558660fab2dab229d2555adaf89c88604051610d5791815260200190565b60405180910390a36001945050505050600160345592915050565b600080600080600080600080886036600082815260200190815260200160002060070160149054906101000a900460ff16610def5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b50505060009687525050603660205250506040909220600681015460058201548254600784015460038501546004860154600287015460019097015473ffffffffffffffffffffffffffffffffffffffff9687169a958716995093975091909416949092909190565b600081815260366020526040812060070154829074010000000000000000000000000000000000000000900460ff16610ed35760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b6000838152603660209081526040918290208251610120810184528154815260018201549281019290925260028101549282019290925260038201546060820181905260048301546080830152600583015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006840154811660c084015260079093015492831660e08301527401000000000000000000000000000000000000000090920460ff161515610100820152904211610f91576000925050610fcc565b8060800151421015610fb4576060810151610fac904261205b565b925050610fcc565b80606001518160800151610fc8919061205b565b9250505b50919050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110395760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff821661109c5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f30585f524543495049454e540000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156110f3576110ee73ffffffffffffffffffffffffffffffffffffffff83168261190c565b505050565b6110ee73ffffffffffffffffffffffffffffffffffffffff84168383611838565b600054600190811161118e5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a65640000000000000000000000000000000000006064820152608401610390565b6000819055620186a06035556111a382611a32565b5050565b60335460009073ffffffffffffffffffffffffffffffffffffffff1633146112115760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86166112745760405162461bcd60e51b815260206004820152601a60248201527f73747265616d20746f20746865207a65726f20616464726573730000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86163014156112da5760405162461bcd60e51b815260206004820152601d60248201527f73747265616d20746f2074686520636f6e747261637420697473656c660000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86163314156113405760405162461bcd60e51b815260206004820152601460248201527f73747265616d20746f207468652063616c6c65720000000000000000000000006044820152606401610390565b600085116113905760405162461bcd60e51b815260206004820152600f60248201527f6465706f736974206973207a65726f00000000000000000000000000000000006044820152606401610390565b428310156114065760405162461bcd60e51b815260206004820152602160248201527f73746172742074696d65206265666f726520626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610390565b8282116114555760405162461bcd60e51b815260206004820152601f60248201527f73746f702074696d65206265666f7265207468652073746172742074696d65006044820152606401610390565b6040805180820190915260008082526020820152611473848461205b565b8082528610156114c55760405162461bcd60e51b815260206004820152601f60248201527f6465706f73697420736d616c6c6572207468616e2074696d652064656c7461006044820152606401610390565b80516114d190876120a1565b156115445760405162461bcd60e51b815260206004820152602260248201527f6465706f736974206e6f74206d756c7469706c65206f662074696d652064656c60448201527f74610000000000000000000000000000000000000000000000000000000000006064820152608401610390565b805161155090876120b5565b81602001818152505060006035549050604051806101200160405280888152602001836020015181526020018881526020018681526020018581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525060366000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101008201518160070160146101000a81548160ff0219169083151502179055509050506035600081548092919061173a906120c9565b90915550506040805188815273ffffffffffffffffffffffffffffffffffffffff88811660208301529181018790526060810186905290891690309083907f7b01d409597969366dc268d7f957a990d1ca3d3449baf8fb45db67351aecfe789060800160405180910390a4979650505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146118175760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b6110ee73ffffffffffffffffffffffffffffffffffffffff84168383611aa1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526110ee9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c09565b8047101561195c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610390565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119b6576040519150601f19603f3d011682016040523d82523d6000602084013e6119bb565b606091505b50509050806110ee5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610390565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f1ab77a654795da4cfe37c33188e862203ade9a5c7f1a9d4957669b3ccbec9e1190600090a250565b801580611b4157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f9190612102565b155b611bb35760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610390565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526110ee9084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161188a565b6000611c6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611cfb9092919063ffffffff16565b8051909150156110ee5780806020019051810190611c89919061211b565b6110ee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610390565b6060611d0a8484600085611d14565b90505b9392505050565b606082471015611d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610390565b73ffffffffffffffffffffffffffffffffffffffff85163b611df05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610390565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611e19919061216d565b60006040518083038185875af1925050503d8060008114611e56576040519150601f19603f3d011682016040523d82523d6000602084013e611e5b565b606091505b5091509150611e6b828286611e76565b979650505050505050565b60608315611e85575081611d0d565b825115611e955782518084602001fd5b8160405162461bcd60e51b81526004016103909190612189565b73ffffffffffffffffffffffffffffffffffffffff81168114611ed157600080fd5b50565b60008060408385031215611ee757600080fd5b823591506020830135611ef981611eaf565b809150509250929050565b600060208284031215611f1657600080fd5b5035919050565b60008060408385031215611f3057600080fd5b50508035926020909101359150565b600080600060608486031215611f5457600080fd5b8335611f5f81611eaf565b92506020840135611f6f81611eaf565b929592945050506040919091013590565b600060208284031215611f9257600080fd5b8135611d0d81611eaf565b600080600080600060a08688031215611fb557600080fd5b8535611fc081611eaf565b9450602086013593506040860135611fd781611eaf565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561205657612056611fef565b500290565b60008282101561206d5761206d611fef565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120b0576120b0612072565b500690565b6000826120c4576120c4612072565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156120fb576120fb611fef565b5060010190565b60006020828403121561211457600080fd5b5051919050565b60006020828403121561212d57600080fd5b81518015158114611d0d57600080fd5b60005b83811015612158578181015183820152602001612140565b83811115612167576000848401525b50505050565b6000825161217f81846020870161213d565b9190910192915050565b60208152600082518060208401526121a881604085016020870161213d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212203dc8ac7b1914adaee70356e637996e0969ddab8c6e7017887e42a5a97c92861b64736f6c634300080a0033",
  "deployedBytecode": "0x6080604052600436106100d65760003560e01c8063894e9a0d1161007f578063c4d66de811610059578063c4d66de8146102a4578063cc1b4bf6146102c4578063dde43cba146102e4578063e1f21c67146102f957600080fd5b8063894e9a0d146101ea578063a82ccd4d14610262578063beabacc81461028257600080fd5b806351ee886b116100b057806351ee886b146101725780636db9241b1461019a5780637a9b2c6c146101ca57600080fd5b806306bc2ee0146100e25780630932f92b146101335780633656eec21461015257600080fd5b366100dd57005b600080fd5b3480156100ee57600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561013f57600080fd5b506035545b60405190815260200161012a565b34801561015e57600080fd5b5061014461016d366004611ed4565b610319565b34801561017e57600080fd5b5061010973eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156101a657600080fd5b506101ba6101b5366004611f04565b610559565b604051901515815260200161012a565b3480156101d657600080fd5b506101ba6101e5366004611f1d565b61090a565b3480156101f657600080fd5b5061020a610205366004611f04565b610d72565b6040805173ffffffffffffffffffffffffffffffffffffffff998a1681529789166020890152870195909552959092166060850152608084015260a083015260c082019290925260e08101919091526101000161012a565b34801561026e57600080fd5b5061014461027d366004611f04565b610e58565b34801561028e57600080fd5b506102a261029d366004611f3f565b610fd2565b005b3480156102b057600080fd5b506102a26102bf366004611f80565b611114565b3480156102d057600080fd5b506101446102df366004611f9d565b6111a7565b3480156102f057600080fd5b50610144600181565b34801561030557600080fd5b506102a2610314366004611f3f565b6117b0565b600082815260366020526040812060070154839074010000000000000000000000000000000000000000900460ff166103995760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f74206578697374000000000000000000000060448201526064015b60405180910390fd5b600084815260366020908152604080832081516101208101835281548152600182015481850152600282015481840152600382015460608083019190915260048301546080830152600583015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006840154811660c084015260079093015492831660e08301527401000000000000000000000000000000000000000090920460ff161515610100820152825191820183528482529281018490529081019290925290600061046487610e58565b9050826020015181610476919061201e565b82526040830151835111156104ac5760408301518351610496919061205b565b6020830181905282516104a9919061205b565b82525b8260a0015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156104ef57505192506105529050565b8260c0015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561054a5781516040840151610538919061205b565b60409092018290525092506105529050565b600094505050505b5092915050565b6000600260345414156105ae5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610390565b6002603455600082815260366020526040902060070154829074010000000000000000000000000000000000000000900460ff1661062e5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b603354839073ffffffffffffffffffffffffffffffffffffffff1633148061067c575060008181526036602052604090206005015473ffffffffffffffffffffffffffffffffffffffff1633145b6106ee5760405162461bcd60e51b815260206004820152603c60248201527f63616c6c6572206973206e6f74207468652066756e64732061646d696e206f7260448201527f2074686520726563697069656e74206f66207468652073747265616d000000006064820152608401610390565b6000848152603660209081526040808320815161012081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006820154811660c0840181905260079092015490811660e084015274010000000000000000000000000000000000000000900460ff1615156101008301529091906107a7908790610319565b905060006107b9878460a00151610319565b600088815260366020526040812081815560018101829055600281018290556003810182905560048101919091556005810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155600682018054909116905560070180547fffffffffffffffffffffff00000000000000000000000000000000000000000016905560e0840151909150811561087d5760a084015161087d9073ffffffffffffffffffffffffffffffffffffffff83169084611838565b8360a0015173ffffffffffffffffffffffffffffffffffffffff168460c0015173ffffffffffffffffffffffffffffffffffffffff16897fca3e6079b726e7728802a0537949e2d1c7762304fa641fb06eb56daf2ba8c6b986866040516108ee929190918252602082015260400190565b60405180910390a4600196505050505050506001603455919050565b60006002603454141561095f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610390565b6002603455600083815260366020526040902060070154839074010000000000000000000000000000000000000000900460ff166109df5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b603354849073ffffffffffffffffffffffffffffffffffffffff16331480610a2d575060008181526036602052604090206005015473ffffffffffffffffffffffffffffffffffffffff1633145b610a9f5760405162461bcd60e51b815260206004820152603c60248201527f63616c6c6572206973206e6f74207468652066756e64732061646d696e206f7260448201527f2074686520726563697069656e74206f66207468652073747265616d000000006064820152608401610390565b60008411610aef5760405162461bcd60e51b815260206004820152600e60248201527f616d6f756e74206973207a65726f0000000000000000000000000000000000006044820152606401610390565b6000858152603660209081526040808320815161012081018352815481526001820154938101939093526002810154918301919091526003810154606083015260048101546080830152600581015473ffffffffffffffffffffffffffffffffffffffff90811660a084018190526006830154821660c085015260079092015490811660e084015274010000000000000000000000000000000000000000900460ff161515610100830152909190610ba8908890610319565b905085811015610c1f5760405162461bcd60e51b8152602060048201526024808201527f616d6f756e7420657863656564732074686520617661696c61626c652062616c60448201527f616e6365000000000000000000000000000000000000000000000000000000006064820152608401610390565b858260400151610c2f919061205b565b6000888152603660205260409020600201819055610cd757600087815260366020526040812081815560018101829055600281018290556003810182905560048101919091556005810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155600682018054909116905560070180547fffffffffffffffffffffff0000000000000000000000000000000000000000001690555b610d0a8260a00151878460e0015173ffffffffffffffffffffffffffffffffffffffff166118389092919063ffffffff16565b8160a0015173ffffffffffffffffffffffffffffffffffffffff16877f36c3ab437e6a424ed25dc4bfdeb62706aa06558660fab2dab229d2555adaf89c88604051610d5791815260200190565b60405180910390a36001945050505050600160345592915050565b600080600080600080600080886036600082815260200190815260200160002060070160149054906101000a900460ff16610def5760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b50505060009687525050603660205250506040909220600681015460058201548254600784015460038501546004860154600287015460019097015473ffffffffffffffffffffffffffffffffffffffff9687169a958716995093975091909416949092909190565b600081815260366020526040812060070154829074010000000000000000000000000000000000000000900460ff16610ed35760405162461bcd60e51b815260206004820152601560248201527f73747265616d20646f6573206e6f7420657869737400000000000000000000006044820152606401610390565b6000838152603660209081526040918290208251610120810184528154815260018201549281019290925260028101549282019290925260038201546060820181905260048301546080830152600583015473ffffffffffffffffffffffffffffffffffffffff90811660a08401526006840154811660c084015260079093015492831660e08301527401000000000000000000000000000000000000000090920460ff161515610100820152904211610f91576000925050610fcc565b8060800151421015610fb4576060810151610fac904261205b565b925050610fcc565b80606001518160800151610fc8919061205b565b9250505b50919050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146110395760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff821661109c5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f30585f524543495049454e540000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156110f3576110ee73ffffffffffffffffffffffffffffffffffffffff83168261190c565b505050565b6110ee73ffffffffffffffffffffffffffffffffffffffff84168383611838565b600054600190811161118e5760405162461bcd60e51b815260206004820152602e60248201527f436f6e747261637420696e7374616e63652068617320616c726561647920626560448201527f656e20696e697469616c697a65640000000000000000000000000000000000006064820152608401610390565b6000819055620186a06035556111a382611a32565b5050565b60335460009073ffffffffffffffffffffffffffffffffffffffff1633146112115760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86166112745760405162461bcd60e51b815260206004820152601a60248201527f73747265616d20746f20746865207a65726f20616464726573730000000000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86163014156112da5760405162461bcd60e51b815260206004820152601d60248201527f73747265616d20746f2074686520636f6e747261637420697473656c660000006044820152606401610390565b73ffffffffffffffffffffffffffffffffffffffff86163314156113405760405162461bcd60e51b815260206004820152601460248201527f73747265616d20746f207468652063616c6c65720000000000000000000000006044820152606401610390565b600085116113905760405162461bcd60e51b815260206004820152600f60248201527f6465706f736974206973207a65726f00000000000000000000000000000000006044820152606401610390565b428310156114065760405162461bcd60e51b815260206004820152602160248201527f73746172742074696d65206265666f726520626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610390565b8282116114555760405162461bcd60e51b815260206004820152601f60248201527f73746f702074696d65206265666f7265207468652073746172742074696d65006044820152606401610390565b6040805180820190915260008082526020820152611473848461205b565b8082528610156114c55760405162461bcd60e51b815260206004820152601f60248201527f6465706f73697420736d616c6c6572207468616e2074696d652064656c7461006044820152606401610390565b80516114d190876120a1565b156115445760405162461bcd60e51b815260206004820152602260248201527f6465706f736974206e6f74206d756c7469706c65206f662074696d652064656c60448201527f74610000000000000000000000000000000000000000000000000000000000006064820152608401610390565b805161155090876120b5565b81602001818152505060006035549050604051806101200160405280888152602001836020015181526020018881526020018681526020018581526020018973ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020016001151581525060366000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060c08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060e08201518160070160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101008201518160070160146101000a81548160ff0219169083151502179055509050506035600081548092919061173a906120c9565b90915550506040805188815273ffffffffffffffffffffffffffffffffffffffff88811660208301529181018790526060810186905290891690309083907f7b01d409597969366dc268d7f957a990d1ca3d3449baf8fb45db67351aecfe789060800160405180910390a4979650505050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146118175760405162461bcd60e51b815260206004820152601360248201527f4f4e4c595f42595f46554e44535f41444d494e000000000000000000000000006044820152606401610390565b6110ee73ffffffffffffffffffffffffffffffffffffffff84168383611aa1565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526110ee9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611c09565b8047101561195c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610390565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146119b6576040519150601f19603f3d011682016040523d82523d6000602084013e6119bb565b606091505b50509050806110ee5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610390565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f1ab77a654795da4cfe37c33188e862203ade9a5c7f1a9d4957669b3ccbec9e1190600090a250565b801580611b4157506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015611b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3f9190612102565b155b611bb35760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610390565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526110ee9084907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161188a565b6000611c6b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611cfb9092919063ffffffff16565b8051909150156110ee5780806020019051810190611c89919061211b565b6110ee5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610390565b6060611d0a8484600085611d14565b90505b9392505050565b606082471015611d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610390565b73ffffffffffffffffffffffffffffffffffffffff85163b611df05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610390565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611e19919061216d565b60006040518083038185875af1925050503d8060008114611e56576040519150601f19603f3d011682016040523d82523d6000602084013e611e5b565b606091505b5091509150611e6b828286611e76565b979650505050505050565b60608315611e85575081611d0d565b825115611e955782518084602001fd5b8160405162461bcd60e51b81526004016103909190612189565b73ffffffffffffffffffffffffffffffffffffffff81168114611ed157600080fd5b50565b60008060408385031215611ee757600080fd5b823591506020830135611ef981611eaf565b809150509250929050565b600060208284031215611f1657600080fd5b5035919050565b60008060408385031215611f3057600080fd5b50508035926020909101359150565b600080600060608486031215611f5457600080fd5b8335611f5f81611eaf565b92506020840135611f6f81611eaf565b929592945050506040919091013590565b600060208284031215611f9257600080fd5b8135611d0d81611eaf565b600080600080600060a08688031215611fb557600080fd5b8535611fc081611eaf565b9450602086013593506040860135611fd781611eaf565b94979396509394606081013594506080013592915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561205657612056611fef565b500290565b60008282101561206d5761206d611fef565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826120b0576120b0612072565b500690565b6000826120c4576120c4612072565b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156120fb576120fb611fef565b5060010190565b60006020828403121561211457600080fd5b5051919050565b60006020828403121561212d57600080fd5b81518015158114611d0d57600080fd5b60005b83811015612158578181015183820152602001612140565b83811115612167576000848401525b50505050565b6000825161217f81846020870161213d565b9190910192915050565b60208152600082518060208401526121a881604085016020870161213d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212203dc8ac7b1914adaee70356e637996e0969ddab8c6e7017887e42a5a97c92861b64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
