WETH Gateway

If you need to use native ETH (MATIC / AVAX in case of side chain market) in the protocol, it must first be wrapped into WETH (or WMATIC / WAVAX). The WETH Gateway contract is a helper contract to easily wrap and unwrap ETH (or MATIC / AVAX) as necessary when interacting with the protocol, since only ERC20 is used within protocol interactions.

Methods

depositETH()

function depositETH(uint256 reserveId, address onBehalfOf, uint16 referralCode)

Deposits the msg.value amount of ETH into the protocol, minting the same amount of corresponding fWETH, and transferring them to the onBehalfOf address.

Ensure that the depositETH() transaction also includes the amount of ETH you are depositing in the msg.value.

Parameter Name
Type
Description

reserveId

uint256

id of the targeted lending pool reserve

onBehalfOf

address

address whom will receive the fWETH. Use msg.sender when the fTokens should be sent to the caller.

referralCode

uint16

referral code for our referral program. Use 0 for no referral.

batchDepositETH()

function batchDepositETH(uint256[] calldata reserveIds, address[] calldata onBehalfOfs, uint16[] calldata referralCodes)

Deposits the msg.value amount of ETH into the protocol, minting the same amount of corresponding fWETH, and transferring them to the onBehalfOfs addresses.

Ensure that the batchDepositETH() transaction also includes the total amount of ETH you are depositing in the msg.value.

Parameter Name
Type
Description

reserveIds

uint256[] calldata

ids of the targeted lending pool reserves

onBehalfOfs

address[] calldata

addresses whom will receive the fWETH. Use msg.sender when the fTokens should be sent to the caller.

referralCodes

uint16[] calldata

referral codes for our referral program. Use 0 for no referral.

withdrawETH()

function withdrawETH(uint256 amount, uint256 reserveId, address to)

Withdraws amount of the WETH, unwraps it to ETH, and transfers the ETH to the to address.

Ensure you set the relevant ERC20 allowance of fWETH, before calling this function, so the WETHGatewaycontract can burn the associated fWETH.

Parameter Name
Type
Description

amount

uint256

amount withdrawn, expressed in wei units. Use type(uint).max to withdraw the entire balance.

reserveId

uint256

id of the targeted lending pool reserve

to

address

address that will receive the unwrapped ETH

batchWithdrawETH()

function batchWithdrawETH(uint256[] calldata amounts, uint256[] calldata reserveIds, address[] calldata tos)

Batch withdraws amounts of the WETH, unwraps it to ETH, and transfers the ETH to the tos addresses.

Ensure you set the relevant ERC20 allowances of fWETH, before calling this function, so the WETHGatewaycontract can burn the associated fWETHs.

Parameter Name
Type
Description

amounts

uint256[] calldata

amounts withdrawn, expressed in wei units. Use type(uint).max to withdraw the entire balance.

reserveIds

uint256[] calldata

ids of the targeted lending pool reserves

tos

address[] calldata

addresses that will receive the unwrapped ETH

borrowETH()

function borrowETH(uint256 amount, uint256 tokenId, uint256 tokenValue, uint256 reserveId, uint256 duration, address onBehalfOf, uint16 referralCode)

Borrows amount of ETH, sending the amount of ETH to msg.sender.

Parameter Name
Type
Description

amount

uint256

amount to be borrowed, expressed in wei units

tokenId

uint256

tokenId of the NFT used as collateral

tokenValue

uint256

value of ERC1155 tokens collateralised, 0 if ERC721

reserveId

uint256

the id of the targeted reserve

duration

uint256

the duration of the loan, 0 if open-ended

onBehalfOf

address

addresses whom will receive the loan

referralCode

uint16

referral code for our referral program. Use 0 for no referral code.

batchBorrowETH()

function batchBorrowETH(uint256[] calldata amounts, uint256[] calldata tokenIds, uint256[] calldata tokenValues, uint256[] calldata reserveIds, uint256 duration, address onBehalfOf, uint16 referralCode)

Batch borrows amounts of ETH, sending the amounts of ETH to msg.sender. Note: distinct durations are unsupported.

Parameter Name
Type
Description

amounts

uint256[] calldata

amounts to be borrowed, expressed in wei units

tokenIds

uint256[] calldata

tokenIds of the NFT(s) used as collateral

tokenValues

uint256[] calldata

values of ERC1155 tokens collateralised, 0 if ERC721

reserveIds

uint256[] calldata

the ids of the targeted reserves

duration

uint256

the duration of the loan, 0 if open-ended

onBehalfOf

address

addresses whom will receive the loan

referralCode

uint16

referral code for our referral program. Use 0 for no referral code.

repayETH()

function repayETH(uint256 borrowId, uint256 amount)

Repays debt of a targeted borrowId an amount of ETH.

Ensure that the repayETH() transaction also includes the amount of ETH you are repaying in the msg.value.

Parameter Name
Type
Description

borrowId

uint256

id of the targeted borrow

amount

uint256

amount to be repaid, expressed in wei units.

Use type(uint256).max to repay the entire debt, ONLY when the repayment is not executed on behalf of a 3rd party.

In case of repayments on behalf of another user, it's recommended to send an amount slightly higher than the current borrowed amount.

batchRepayETH()

function batchRepayETH(uint256[] calldata borrowIds, uint256[] calldata amounts)

Batch repays debts of targeted borrowIds amounts of ETH.

Ensure that the batchRepayETH() transaction also includes the amount of ETH you are repaying in the msg.value.

Parameter Name
Type
Description

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

amounts to be repaid, expressed in wei units.

Use type(uint256).max to repay the entire debt, ONLY when the repayment is not executed on behalf of a 3rd party.

In case of repayments on behalf of another user, it's recommended to send an amount slightly higher than the current borrowed amount.

refinanceETH()

function refinanceETH(uint256 borrowId, uint256 amount, uint256 duration)

Refinances a targeted borrowId with more or less amount of ETH, and an updated duration.

Ensure that the refinanceETH() transaction also includes the amount of ETH if you are refinancing at a lower debt level. The value sent should be the difference.

Parameter Name
Type
Description

borrowId

uint256

id of the targeted borrow

amount

uint256

new loan amount, expressed in wei units.

duration

uint256

new loan duration, from time of refinancing

batchRefinanceETH()

function batchRefinanceETH(uint256[] calldata borrowIds, uint256[] calldata amounts, uint256[] calldata durations)

Batch refinances targeted borrowIds with more or less amounts of ETH, and updated durations.

Ensure that the batchRefinanceETH() transaction also includes the amount of ETH if you are refinancing at a lower debt level(s). The value sent should be the difference.

Parameter Name
Type
Description

borrowIds

uint256[] calldata

ids of the targeted borrows

amounts

uint256[] calldata

new loan amounts, expressed in wei units.

durations

uint256[] calldata

new loan durations, from time of refinancing

bidETH()

function bidETH(address asset, uint256 amount, uint256 borrowId, address onBehalfOf)

Purchases the underlying collateral of a defaulted loan in auction.

Ensure that the loan is in default and the liquidity auction is active else this call will fail

Parameter Name
Type
Description

asset

address

address of the payment currency

amount

uint256

bid / purchase amount

borrowId

uint256

id of the targeted borrow

onBehalfOf

address

address to receive the underlying collateral

batchBidETH()

function batchBidETH(address[] calldata assets, uint256[] calldata amounts, uint256[] calldata borrowIds, address[] calldata onBehalfOfs)

Batch purchases the underlying collaterals of a defaulted loans in auction.

Ensure that the loans are in default and liquidity auctions are active else this call will fail

Parameter Name
Type
Description

assets

address[] calldata

addresses of the payment currencies

amounts

uint256[] calldata

bid / purchase amounts

borrowIds

uint256[] calldata

ids of the targeted borrows

onBehalfOfs

address[] calldata

addresses to receive the underlying collateral

View Methods

getWETHAddress()

function getWETHAddress()

Returns the WETH address used by the WETHGateway.

ABI

WETH Gateway ABI
{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "authorizeExecutionDelegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "assets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        }
      ],
      "name": "batchBidETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "tokenValues",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "batchBorrowETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "onBehalfOfs",
          "type": "address[]"
        },
        {
          "internalType": "uint16[]",
          "name": "referralCodes",
          "type": "uint16[]"
        }
      ],
      "name": "batchDepositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "durations",
          "type": "uint256[]"
        }
      ],
      "name": "batchRefinanceETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "borrowIds",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "batchRepayETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "reserveIds",
          "type": "uint256[]"
        },
        {
          "internalType": "address[]",
          "name": "tos",
          "type": "address[]"
        }
      ],
      "name": "batchWithdrawETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        }
      ],
      "name": "bidETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenValue",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "borrowETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "internalType": "uint16",
          "name": "referralCode",
          "type": "uint16"
        }
      ],
      "name": "depositETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "emergencyEtherTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "emergencyTokenTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWETHAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "weth",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "addressProvider",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "duration",
          "type": "uint256"
        }
      ],
      "name": "refinanceETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "borrowId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "repayETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "reserveId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        }
      ],
      "name": "withdrawETH",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": {
    "object": "0x608060405234801561001057600080fd5b50612be7806100206000396000f3fe6080604052600436106101025760003560e01c806376e13af111610095578063bba6bc6d11610064578063bba6bc6d146102ba578063caaabc60146102cd578063ced46f82146102e2578063d0fee56814610302578063eed88b8d1461032257610158565b806376e13af1146102485780637f185c1e1461025b578063a3d5b2551461026e578063affa88171461028e57610158565b8063485cc955116100d1578063485cc955146101e25780635a95399914610202578063664054ce146102155780636a41a61b1461022857610158565b80630572c30f146101895780631976c7ba1461019c57806331a9b157146101af57806335f9a701146101c257610158565b366101585760335460408051808201909152600381526238353360e81b6020820152906001600160a01b031633146101565760405162461bcd60e51b815260040161014d9190611efd565b60405180910390fd5b005b60408051808201825260038152620e0d4d60ea1b6020820152905162461bcd60e51b815261014d9190600401611efd565b610156610197366004611f30565b610342565b6101566101aa366004611fa8565b610511565b6101566101bd366004611fa8565b6106ef565b3480156101ce57600080fd5b506101566101dd3660046120a3565b610851565b3480156101ee57600080fd5b506101566101fd366004612108565b610954565b610156610210366004612141565b610a8f565b6101566102233660046121ad565b610c12565b34801561023457600080fd5b506101566102433660046121f7565b610d51565b610156610256366004612230565b610f95565b61015661026936600461226e565b611076565b34801561027a57600080fd5b50610156610289366004612290565b6111a3565b34801561029a57600080fd5b50603354604080516001600160a01b039092168252519081900360200190f35b6101566102c83660046122d1565b6112c8565b3480156102d957600080fd5b50610156611545565b3480156102ee57600080fd5b506101566102fd3660046122d1565b6116e4565b34801561030e57600080fd5b5061015661031d36600461236b565b611b81565b34801561032e57600080fd5b5061015661033d36600461245b565b611cb5565b60008061034d611d71565b6001600160a01b03166301667623866040518263ffffffff1660e01b815260040161037a91815260200190565b608060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190612492565b935050505080841115610414576103d281856124f1565b9150813410156040518060400160405280600381526020016238353160e81b815250906104125760405162461bcd60e51b815260040161014d9190611efd565b505b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561046457600080fd5b505af1158015610478573d6000803e3d6000fd5b5050505050610485611de4565b604051630226f8f960e11b81526004810187905260248101869052604481018590526001600160a01b03919091169063044df1f290606401600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050508134111561050a5761050a3361050584346124f1565b611e2e565b5050505050565b8685146105305760405162461bcd60e51b815260040161014d9061250a565b86831461054f5760405162461bcd60e51b815260040161014d9061250a565b86811461056e5760405162461bcd60e51b815260040161014d9061250a565b6000805b888110156105b25789898281811061058c5761058c612525565b905060200201358261059e919061253b565b9150806105aa8161254e565b915050610572565b50803410156040518060400160405280600381526020016203835360ec1b815250906105f15760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050610663611de4565b6001600160a01b0316634b33a9678a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c9897969594939291906125e2565b600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b50505050803411156106e4576106e43361050583346124f1565b505050505050505050565b86851461070e5760405162461bcd60e51b815260040161014d9061250a565b86831461072d5760405162461bcd60e51b815260040161014d9061250a565b6000805b868110156107675787878281811061074b5761074b612525565b905060200201359150808061075f9061254e565b915050610731565b50803410156040518060400160405280600381526020016203835360ec1b815250906107a65760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b5050505050610818611de4565b6001600160a01b0316632684dd098a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c98979695949392919061266a565b610859611de4565b60405163138e9b5f60e31b815260048101899052602481018890526044810187905260648101869052608481018590526001600160a01b0384811660a483015261ffff841660c48301529190911690639c74daf89060e401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018b90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801561092957600080fd5b505af115801561093d573d6000803e3d6000fd5b5050505061094b3388611e2e565b50505050505050565b600054610100900460ff16158080156109745750600054600160ff909116105b8061098e5750303b15801561098e575060005460ff166001145b6109f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161014d565b6000805460ff191660011790558015610a14576000805461ff0019166101001790555b603380546001600160a01b038086166001600160a01b03199283161790925560348054928516929091169190911790558015610a8a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b828114610aae5760405162461bcd60e51b815260040161014d9061250a565b6000805b82811015610ae857838382818110610acc57610acc612525565b9050602002013591508080610ae09061254e565b915050610ab2565b50803410156040518060400160405280600381526020016238353160e81b81525090610b275760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b5050505050610b99611de4565b6001600160a01b031663ff7039c7868686866040518563ffffffff1660e01b8152600401610bca94939291906126ca565b600060405180830381600087803b158015610be457600080fd5b505af1158015610bf8573d6000803e3d6000fd5b505050508034111561050a5761050a3361050583346124f1565b823410156040518060400160405280600381526020016203835360ec1b81525090610c505760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b5050505050610cc2611de4565b60405163a7ff3b2360e01b81526001600160a01b03868116600483015260248201869052604482018590528381166064830152919091169063a7ff3b2390608401600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b5050505082341115610d4b57610d4b3361050585346124f1565b50505050565b6000610d5b611de4565b6040516377778db360e01b8152600481018590529091506000906001600160a01b038316906377778db390602401600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dce919081019061283b565b606001516040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906129b3565b90508560018101610e4e5750805b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec591906129cc565b50604051630ad58d2f60e01b815260048101829052602481018790523060448201526001600160a01b03851690630ad58d2f90606401600060405180830381600087803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018590526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b5050505061094b8582611e2e565b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b5050505050611006611de4565b604051630ef453e160e11b8152346004820152602481018590526001600160a01b03848116604483015261ffff841660648301529190911690631de8a7c290608401600060405180830381600087803b15801561106257600080fd5b505af115801561094b573d6000803e3d6000fd5b803410156040518060400160405280600381526020016238353160e81b815250906110b45760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b5050505050611126611de4565b60405163d8aed14560e01b815260048101849052602481018390526001600160a01b03919091169063d8aed14590604401600060405180830381600087803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b505050508034111561119f5761119f3361050583346124f1565b5050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906112545760405162461bcd60e51b815260040161014d9190611efd565b5060405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b91906129cc565b6000808685146112ea5760405162461bcd60e51b815260040161014d9061250a565b8683146113095760405162461bcd60e51b815260040161014d9061250a565b60005b8781101561140d5761131c611d71565b6001600160a01b031663016676238a8a8481811061133c5761133c612525565b905060200201356040518263ffffffff1660e01b815260040161136191815260200190565b608060405180830381865afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612492565b9550859250899150889050838181106113bd576113bd612525565b9050602002013511156113fb57828787838181106113dd576113dd612525565b905060200201356113ee91906124f1565b6113f8908361253b565b91505b806114058161254e565b91505061130c565b50803410156040518060400160405280600381526020016238353160e81b8152509061144c5760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b50505050506114be611de4565b6001600160a01b031663621759de8989898989896040518763ffffffff1660e01b81526004016114f396959493929190612a12565b600060405180830381600087803b15801561150d57600080fd5b505af1158015611521573d6000803e3d6000fd5b505050508034111561153b5761153b3361050583346124f1565b5050505050505050565b603454604080516326deb97b60e21b8152905133926001600160a01b031691639b7ae5ec9160048083019260209291908290030181865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b291906129f5565b6001600160a01b0316146040518060400160405280600381526020016203430360ec1b815250906115f65760405162461bcd60e51b815260040161014d9190611efd565b50603354603454604080516347f872f160e01b815290516001600160a01b039384169363095ea7b39316916347f872f19160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906129f5565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906129cc565b50565b8483146117035760405162461bcd60e51b815260040161014d9061250a565b8481146117225760405162461bcd60e51b815260040161014d9061250a565b60008080808867ffffffffffffffff811115611740576117406126fc565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50905060008967ffffffffffffffff811115611787576117876126fc565b6040519080825280602002602001820160405280156117b0578160200160208202803683370190505b50905060006117bd611de4565b905060005b8b811015611a4957816001600160a01b03166377778db38c8c848181106117eb576117eb612525565b905060200201356040518263ffffffff1660e01b815260040161181091815260200190565b600060405180830381865afa15801561182d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611855919081019061283b565b606001516040516370a0823160e01b81523360048201529097506001600160a01b038816906370a0823190602401602060405180830381865afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c491906129b3565b95508c8c828181106118d8576118d8612525565b905060200201358382815181106118f1576118f1612525565b6020026020010181815250506000198d8d8381811061191257611912612525565b905060200201350361193e578583828151811061193157611931612525565b6020026020010181815250505b82818151811061195057611950612525565b602002602001015185611963919061253b565b9450866001600160a01b03166323b872dd333086858151811061198857611988612525565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b91906129cc565b5030848281518110611a1f57611a1f612525565b6001600160a01b039092166020928302919091019091015280611a418161254e565b9150506117c2565b50604051634f4bd0ab60e11b81526001600160a01b03821690639e97a15690611a7c9085908e908e908990600401612a5b565b600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b5050505060005b87811015611b7257611b60898983818110611b2c57611b2c612525565b9050602002016020810190611b419190612af6565b848381518110611b5357611b53612525565b6020026020010151611e2e565b80611b6a8161254e565b915050611b0f565b50505050505050505050505050565b611b89611de4565b6001600160a01b031663c28cadf78c8c8c8c8c8c8c8c8c8c8c6040518c63ffffffff1660e01b8152600401611bc89b9a99989796959493929190612b13565b600060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506000805b8b811015611c3e578c8c82818110611c1857611c18612525565b9050602002013582611c2a919061253b565b915080611c368161254e565b915050611bfe565b50603354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c8557600080fd5b505af1158015611c99573d6000803e3d6000fd5b50505050611ca73382611e2e565b505050505050505050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa158015611cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2291906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b81525090611d665760405162461bcd60e51b815260040161014d9190611efd565b5061119f8282611e2e565b60345460408051636fd220df60e11b815290516000926001600160a01b03169163dfa441be9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf91906129f5565b905090565b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b604080516000808252602082019092526001600160a01b038416908390604051611e589190612b95565b60006040518083038185875af1925050503d8060008114611e95576040519150601f19603f3d011682016040523d82523d6000602084013e611e9a565b606091505b5050905080604051806040016040528060038152602001621c1a9960e91b81525090610d4b5760405162461bcd60e51b815260040161014d9190611efd565b60005b83811015611ef4578181015183820152602001611edc565b50506000910152565b6020815260008251806020840152611f1c816040850160208701611ed9565b601f01601f19169190910160400192915050565b600080600060608486031215611f4557600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611f6e57600080fd5b50813567ffffffffffffffff811115611f8657600080fd5b6020830191508360208260051b8501011115611fa157600080fd5b9250929050565b6000806000806000806000806080898b031215611fc457600080fd5b883567ffffffffffffffff80821115611fdc57600080fd5b611fe88c838d01611f5c565b909a50985060208b013591508082111561200157600080fd5b61200d8c838d01611f5c565b909850965060408b013591508082111561202657600080fd5b6120328c838d01611f5c565b909650945060608b013591508082111561204b57600080fd5b506120588b828c01611f5c565b999c989b5096995094979396929594505050565b6001600160a01b03811681146116e157600080fd5b803561208c8161206c565b919050565b803561ffff8116811461208c57600080fd5b600080600080600080600060e0888a0312156120be57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356120ec8161206c565b91506120fa60c08901612091565b905092959891949750929550565b6000806040838503121561211b57600080fd5b82356121268161206c565b915060208301356121368161206c565b809150509250929050565b6000806000806040858703121561215757600080fd5b843567ffffffffffffffff8082111561216f57600080fd5b61217b88838901611f5c565b9096509450602087013591508082111561219457600080fd5b506121a187828801611f5c565b95989497509550505050565b600080600080608085870312156121c357600080fd5b84356121ce8161206c565b9350602085013592506040850135915060608501356121ec8161206c565b939692955090935050565b60008060006060848603121561220c57600080fd5b833592506020840135915060408401356122258161206c565b809150509250925092565b60008060006060848603121561224557600080fd5b8335925060208401356122578161206c565b915061226560408501612091565b90509250925092565b6000806040838503121561228157600080fd5b50508035926020909101359150565b6000806000606084860312156122a557600080fd5b83356122b08161206c565b925060208401356122c08161206c565b929592945050506040919091013590565b600080600080600080606087890312156122ea57600080fd5b863567ffffffffffffffff8082111561230257600080fd5b61230e8a838b01611f5c565b9098509650602089013591508082111561232757600080fd5b6123338a838b01611f5c565b9096509450604089013591508082111561234c57600080fd5b5061235989828a01611f5c565b979a9699509497509295939492505050565b600080600080600080600080600080600060e08c8e03121561238c57600080fd5b67ffffffffffffffff808d3511156123a357600080fd5b6123b08e8e358f01611f5c565b909c509a5060208d01358110156123c657600080fd5b6123d68e60208f01358f01611f5c565b909a50985060408d01358110156123ec57600080fd5b6123fc8e60408f01358f01611f5c565b909850965060608d013581101561241257600080fd5b506124238d60608e01358e01611f5c565b909550935060808c0135925061243b60a08d01612081565b915061244960c08d01612091565b90509295989b509295989b9093969950565b6000806040838503121561246e57600080fd5b82356124798161206c565b946020939093013593505050565b805161208c8161206c565b600080600080608085870312156124a857600080fd5b84516124b38161206c565b6020860151604087015191955093506124cb8161206c565b6060959095015193969295505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612504576125046124db565b92915050565b6020808252600190820152606560f81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115612504576125046124db565b600060018201612560576125606124db565b5060010190565b81835260006001600160fb1b0383111561258057600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156125d75781356125bc8161206c565b6001600160a01b0316875295820195908201906001016125a9565b509495945050505050565b6080815260006125f6608083018a8c612567565b60208382038185015261260a828a8c612567565b9150838203604085015261261f82888a612599565b8481036060860152858152869250810160005b868110156126595761ffff61264685612091565b1682529282019290820190600101612632565b509c9b505050505050505050505050565b60808152600061267e608083018a8c612599565b828103602084015261269181898b612567565b905082810360408401526126a6818789612567565b905082810360608401526126bb818587612599565b9b9a5050505050505050505050565b6040815260006126de604083018688612567565b82810360208401526126f1818587612567565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610220810167ffffffffffffffff81118282101715612736576127366126fc565b60405290565b60006020828403121561274e57600080fd5b6040516020810181811067ffffffffffffffff82111715612771576127716126fc565b6040529151825250919050565b600082601f83011261278f57600080fd5b815167ffffffffffffffff808211156127aa576127aa6126fc565b604051601f8301601f19908116603f011681019082821181831017156127d2576127d26126fc565b816040528381528660208588010111156127eb57600080fd5b6127fc846020830160208901611ed9565b9695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461208c57600080fd5b805164ffffffffff8116811461208c57600080fd5b60006020828403121561284d57600080fd5b815167ffffffffffffffff8082111561286557600080fd5b90830190610220828603121561287a57600080fd5b612882612712565b61288c868461273c565b815261289a60208401612487565b60208201526128ab60408401612487565b60408201526128bc60608401612487565b60608201526128cd60808401612487565b60808201526128de60a08401612487565b60a08201526128ef60c08401612487565b60c082015260e08301518281111561290657600080fd5b6129128782860161277e565b60e08301525061010083810151908201526101208084015190820152610140808401519082015261016080840151908201526101809150612954828401612806565b828201526101a09150612968828401612806565b828201526101c0915061297c828401612806565b828201526101e09150612990828401612806565b8282015261020091506129a4828401612826565b91810191909152949350505050565b6000602082840312156129c557600080fd5b5051919050565b6000602082840312156129de57600080fd5b815180151581146129ee57600080fd5b9392505050565b600060208284031215612a0757600080fd5b81516129ee8161206c565b606081526000612a2660608301888a612567565b8281036020840152612a39818789612567565b90508281036040840152612a4e818587612567565b9998505050505050505050565b606080825285519082018190526000906020906080840190828901845b82811015612a9457815184529284019290840190600101612a78565b50505083810382850152612aa9818789612567565b8481036040860152855180825283870192509083019060005b81811015612ae75783516001600160a01b031683529284019291840191600101612ac2565b50909998505050505050505050565b600060208284031215612b0857600080fd5b81356129ee8161206c565b60e081526000612b2760e083018d8f612567565b8281036020840152612b3a818c8e612567565b90508281036040840152612b4f818a8c612567565b90508281036060840152612b6481888a612567565b608084019690965250506001600160a01b039290921660a083015261ffff1660c09091015298975050505050505050565b60008251612ba7818460208701611ed9565b919091019291505056fea2646970667358221220ad3e0017c1ed127988062c43f47f2ece1ffefb759b508a20738251f3a9e3ce9d64736f6c63430008100033",
    "sourceMap": "1099:16876:118:-:0;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x6080604052600436106101025760003560e01c806376e13af111610095578063bba6bc6d11610064578063bba6bc6d146102ba578063caaabc60146102cd578063ced46f82146102e2578063d0fee56814610302578063eed88b8d1461032257610158565b806376e13af1146102485780637f185c1e1461025b578063a3d5b2551461026e578063affa88171461028e57610158565b8063485cc955116100d1578063485cc955146101e25780635a95399914610202578063664054ce146102155780636a41a61b1461022857610158565b80630572c30f146101895780631976c7ba1461019c57806331a9b157146101af57806335f9a701146101c257610158565b366101585760335460408051808201909152600381526238353360e81b6020820152906001600160a01b031633146101565760405162461bcd60e51b815260040161014d9190611efd565b60405180910390fd5b005b60408051808201825260038152620e0d4d60ea1b6020820152905162461bcd60e51b815261014d9190600401611efd565b610156610197366004611f30565b610342565b6101566101aa366004611fa8565b610511565b6101566101bd366004611fa8565b6106ef565b3480156101ce57600080fd5b506101566101dd3660046120a3565b610851565b3480156101ee57600080fd5b506101566101fd366004612108565b610954565b610156610210366004612141565b610a8f565b6101566102233660046121ad565b610c12565b34801561023457600080fd5b506101566102433660046121f7565b610d51565b610156610256366004612230565b610f95565b61015661026936600461226e565b611076565b34801561027a57600080fd5b50610156610289366004612290565b6111a3565b34801561029a57600080fd5b50603354604080516001600160a01b039092168252519081900360200190f35b6101566102c83660046122d1565b6112c8565b3480156102d957600080fd5b50610156611545565b3480156102ee57600080fd5b506101566102fd3660046122d1565b6116e4565b34801561030e57600080fd5b5061015661031d36600461236b565b611b81565b34801561032e57600080fd5b5061015661033d36600461245b565b611cb5565b60008061034d611d71565b6001600160a01b03166301667623866040518263ffffffff1660e01b815260040161037a91815260200190565b608060405180830381865afa158015610397573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bb9190612492565b935050505080841115610414576103d281856124f1565b9150813410156040518060400160405280600381526020016238353160e81b815250906104125760405162461bcd60e51b815260040161014d9190611efd565b505b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561046457600080fd5b505af1158015610478573d6000803e3d6000fd5b5050505050610485611de4565b604051630226f8f960e11b81526004810187905260248101869052604481018590526001600160a01b03919091169063044df1f290606401600060405180830381600087803b1580156104d757600080fd5b505af11580156104eb573d6000803e3d6000fd5b505050508134111561050a5761050a3361050584346124f1565b611e2e565b5050505050565b8685146105305760405162461bcd60e51b815260040161014d9061250a565b86831461054f5760405162461bcd60e51b815260040161014d9061250a565b86811461056e5760405162461bcd60e51b815260040161014d9061250a565b6000805b888110156105b25789898281811061058c5761058c612525565b905060200201358261059e919061253b565b9150806105aa8161254e565b915050610572565b50803410156040518060400160405280600381526020016203835360ec1b815250906105f15760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050610663611de4565b6001600160a01b0316634b33a9678a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c9897969594939291906125e2565b600060405180830381600087803b1580156106b657600080fd5b505af11580156106ca573d6000803e3d6000fd5b50505050803411156106e4576106e43361050583346124f1565b505050505050505050565b86851461070e5760405162461bcd60e51b815260040161014d9061250a565b86831461072d5760405162461bcd60e51b815260040161014d9061250a565b6000805b868110156107675787878281811061074b5761074b612525565b905060200201359150808061075f9061254e565b915050610731565b50803410156040518060400160405280600381526020016203835360ec1b815250906107a65760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156107f757600080fd5b505af115801561080b573d6000803e3d6000fd5b5050505050610818611de4565b6001600160a01b0316632684dd098a8a8a8a8a8a8a8a6040518963ffffffff1660e01b815260040161069c98979695949392919061266a565b610859611de4565b60405163138e9b5f60e31b815260048101899052602481018890526044810187905260648101869052608481018590526001600160a01b0384811660a483015261ffff841660c48301529190911690639c74daf89060e401600060405180830381600087803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018b90526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b15801561092957600080fd5b505af115801561093d573d6000803e3d6000fd5b5050505061094b3388611e2e565b50505050505050565b600054610100900460ff16158080156109745750600054600160ff909116105b8061098e5750303b15801561098e575060005460ff166001145b6109f15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161014d565b6000805460ff191660011790558015610a14576000805461ff0019166101001790555b603380546001600160a01b038086166001600160a01b03199283161790925560348054928516929091169190911790558015610a8a576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b828114610aae5760405162461bcd60e51b815260040161014d9061250a565b6000805b82811015610ae857838382818110610acc57610acc612525565b9050602002013591508080610ae09061254e565b915050610ab2565b50803410156040518060400160405280600381526020016238353160e81b81525090610b275760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610b7857600080fd5b505af1158015610b8c573d6000803e3d6000fd5b5050505050610b99611de4565b6001600160a01b031663ff7039c7868686866040518563ffffffff1660e01b8152600401610bca94939291906126ca565b600060405180830381600087803b158015610be457600080fd5b505af1158015610bf8573d6000803e3d6000fd5b505050508034111561050a5761050a3361050583346124f1565b823410156040518060400160405280600381526020016203835360ec1b81525090610c505760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ca157600080fd5b505af1158015610cb5573d6000803e3d6000fd5b5050505050610cc2611de4565b60405163a7ff3b2360e01b81526001600160a01b03868116600483015260248201869052604482018590528381166064830152919091169063a7ff3b2390608401600060405180830381600087803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b5050505082341115610d4b57610d4b3361050585346124f1565b50505050565b6000610d5b611de4565b6040516377778db360e01b8152600481018590529091506000906001600160a01b038316906377778db390602401600060405180830381865afa158015610da6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610dce919081019061283b565b606001516040516370a0823160e01b81523360048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4091906129b3565b90508560018101610e4e5750805b6040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038416906323b872dd906064016020604051808303816000875af1158015610ea1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec591906129cc565b50604051630ad58d2f60e01b815260048101829052602481018790523060448201526001600160a01b03851690630ad58d2f90606401600060405180830381600087803b158015610f1557600080fd5b505af1158015610f29573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018590526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015610f7357600080fd5b505af1158015610f87573d6000803e3d6000fd5b5050505061094b8582611e2e565b603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610fe557600080fd5b505af1158015610ff9573d6000803e3d6000fd5b5050505050611006611de4565b604051630ef453e160e11b8152346004820152602481018590526001600160a01b03848116604483015261ffff841660648301529190911690631de8a7c290608401600060405180830381600087803b15801561106257600080fd5b505af115801561094b573d6000803e3d6000fd5b803410156040518060400160405280600381526020016238353160e81b815250906110b45760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561110557600080fd5b505af1158015611119573d6000803e3d6000fd5b5050505050611126611de4565b60405163d8aed14560e01b815260048101849052602481018390526001600160a01b03919091169063d8aed14590604401600060405180830381600087803b15801561117157600080fd5b505af1158015611185573d6000803e3d6000fd5b505050508034111561119f5761119f3361050583346124f1565b5050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa1580156111ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121091906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b815250906112545760405162461bcd60e51b815260040161014d9190611efd565b5060405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156112a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b91906129cc565b6000808685146112ea5760405162461bcd60e51b815260040161014d9061250a565b8683146113095760405162461bcd60e51b815260040161014d9061250a565b60005b8781101561140d5761131c611d71565b6001600160a01b031663016676238a8a8481811061133c5761133c612525565b905060200201356040518263ffffffff1660e01b815260040161136191815260200190565b608060405180830381865afa15801561137e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a29190612492565b9550859250899150889050838181106113bd576113bd612525565b9050602002013511156113fb57828787838181106113dd576113dd612525565b905060200201356113ee91906124f1565b6113f8908361253b565b91505b806114058161254e565b91505061130c565b50803410156040518060400160405280600381526020016238353160e81b8152509061144c5760405162461bcd60e51b815260040161014d9190611efd565b50603360009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149d57600080fd5b505af11580156114b1573d6000803e3d6000fd5b50505050506114be611de4565b6001600160a01b031663621759de8989898989896040518763ffffffff1660e01b81526004016114f396959493929190612a12565b600060405180830381600087803b15801561150d57600080fd5b505af1158015611521573d6000803e3d6000fd5b505050508034111561153b5761153b3361050583346124f1565b5050505050505050565b603454604080516326deb97b60e21b8152905133926001600160a01b031691639b7ae5ec9160048083019260209291908290030181865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b291906129f5565b6001600160a01b0316146040518060400160405280600381526020016203430360ec1b815250906115f65760405162461bcd60e51b815260040161014d9190611efd565b50603354603454604080516347f872f160e01b815290516001600160a01b039384169363095ea7b39316916347f872f19160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906129f5565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260001960248201526044016020604051808303816000875af11580156116bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e191906129cc565b50565b8483146117035760405162461bcd60e51b815260040161014d9061250a565b8481146117225760405162461bcd60e51b815260040161014d9061250a565b60008080808867ffffffffffffffff811115611740576117406126fc565b604051908082528060200260200182016040528015611769578160200160208202803683370190505b50905060008967ffffffffffffffff811115611787576117876126fc565b6040519080825280602002602001820160405280156117b0578160200160208202803683370190505b50905060006117bd611de4565b905060005b8b811015611a4957816001600160a01b03166377778db38c8c848181106117eb576117eb612525565b905060200201356040518263ffffffff1660e01b815260040161181091815260200190565b600060405180830381865afa15801561182d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611855919081019061283b565b606001516040516370a0823160e01b81523360048201529097506001600160a01b038816906370a0823190602401602060405180830381865afa1580156118a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c491906129b3565b95508c8c828181106118d8576118d8612525565b905060200201358382815181106118f1576118f1612525565b6020026020010181815250506000198d8d8381811061191257611912612525565b905060200201350361193e578583828151811061193157611931612525565b6020026020010181815250505b82818151811061195057611950612525565b602002602001015185611963919061253b565b9450866001600160a01b03166323b872dd333086858151811061198857611988612525565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b91906129cc565b5030848281518110611a1f57611a1f612525565b6001600160a01b039092166020928302919091019091015280611a418161254e565b9150506117c2565b50604051634f4bd0ab60e11b81526001600160a01b03821690639e97a15690611a7c9085908e908e908990600401612a5b565b600060405180830381600087803b158015611a9657600080fd5b505af1158015611aaa573d6000803e3d6000fd5b5050603354604051632e1a7d4d60e01b8152600481018890526001600160a01b039091169250632e1a7d4d9150602401600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b5050505060005b87811015611b7257611b60898983818110611b2c57611b2c612525565b9050602002016020810190611b419190612af6565b848381518110611b5357611b53612525565b6020026020010151611e2e565b80611b6a8161254e565b915050611b0f565b50505050505050505050505050565b611b89611de4565b6001600160a01b031663c28cadf78c8c8c8c8c8c8c8c8c8c8c6040518c63ffffffff1660e01b8152600401611bc89b9a99989796959493929190612b13565b600060405180830381600087803b158015611be257600080fd5b505af1158015611bf6573d6000803e3d6000fd5b505050506000805b8b811015611c3e578c8c82818110611c1857611c18612525565b9050602002013582611c2a919061253b565b915080611c368161254e565b915050611bfe565b50603354604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b158015611c8557600080fd5b505af1158015611c99573d6000803e3d6000fd5b50505050611ca73382611e2e565b505050505050505050505050565b60345460408051636ee554f560e11b8152905133926001600160a01b03169163ddcaa9ea9160048083019260209291908290030181865afa158015611cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2291906129f5565b6001600160a01b031614604051806040016040528060038152602001621b981960e91b81525090611d665760405162461bcd60e51b815260040161014d9190611efd565b5061119f8282611e2e565b60345460408051636fd220df60e11b815290516000926001600160a01b03169163dfa441be9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddf91906129f5565b905090565b60345460408051630261bf8b60e01b815290516000926001600160a01b031691630261bf8b9160048083019260209291908290030181865afa158015611dbb573d6000803e3d6000fd5b604080516000808252602082019092526001600160a01b038416908390604051611e589190612b95565b60006040518083038185875af1925050503d8060008114611e95576040519150601f19603f3d011682016040523d82523d6000602084013e611e9a565b606091505b5050905080604051806040016040528060038152602001621c1a9960e91b81525090610d4b5760405162461bcd60e51b815260040161014d9190611efd565b60005b83811015611ef4578181015183820152602001611edc565b50506000910152565b6020815260008251806020840152611f1c816040850160208701611ed9565b601f01601f19169190910160400192915050565b600080600060608486031215611f4557600080fd5b505081359360208301359350604090920135919050565b60008083601f840112611f6e57600080fd5b50813567ffffffffffffffff811115611f8657600080fd5b6020830191508360208260051b8501011115611fa157600080fd5b9250929050565b6000806000806000806000806080898b031215611fc457600080fd5b883567ffffffffffffffff80821115611fdc57600080fd5b611fe88c838d01611f5c565b909a50985060208b013591508082111561200157600080fd5b61200d8c838d01611f5c565b909850965060408b013591508082111561202657600080fd5b6120328c838d01611f5c565b909650945060608b013591508082111561204b57600080fd5b506120588b828c01611f5c565b999c989b5096995094979396929594505050565b6001600160a01b03811681146116e157600080fd5b803561208c8161206c565b919050565b803561ffff8116811461208c57600080fd5b600080600080600080600060e0888a0312156120be57600080fd5b873596506020880135955060408801359450606088013593506080880135925060a08801356120ec8161206c565b91506120fa60c08901612091565b905092959891949750929550565b6000806040838503121561211b57600080fd5b82356121268161206c565b915060208301356121368161206c565b809150509250929050565b6000806000806040858703121561215757600080fd5b843567ffffffffffffffff8082111561216f57600080fd5b61217b88838901611f5c565b9096509450602087013591508082111561219457600080fd5b506121a187828801611f5c565b95989497509550505050565b600080600080608085870312156121c357600080fd5b84356121ce8161206c565b9350602085013592506040850135915060608501356121ec8161206c565b939692955090935050565b60008060006060848603121561220c57600080fd5b833592506020840135915060408401356122258161206c565b809150509250925092565b60008060006060848603121561224557600080fd5b8335925060208401356122578161206c565b915061226560408501612091565b90509250925092565b6000806040838503121561228157600080fd5b50508035926020909101359150565b6000806000606084860312156122a557600080fd5b83356122b08161206c565b925060208401356122c08161206c565b929592945050506040919091013590565b600080600080600080606087890312156122ea57600080fd5b863567ffffffffffffffff8082111561230257600080fd5b61230e8a838b01611f5c565b9098509650602089013591508082111561232757600080fd5b6123338a838b01611f5c565b9096509450604089013591508082111561234c57600080fd5b5061235989828a01611f5c565b979a9699509497509295939492505050565b600080600080600080600080600080600060e08c8e03121561238c57600080fd5b67ffffffffffffffff808d3511156123a357600080fd5b6123b08e8e358f01611f5c565b909c509a5060208d01358110156123c657600080fd5b6123d68e60208f01358f01611f5c565b909a50985060408d01358110156123ec57600080fd5b6123fc8e60408f01358f01611f5c565b909850965060608d013581101561241257600080fd5b506124238d60608e01358e01611f5c565b909550935060808c0135925061243b60a08d01612081565b915061244960c08d01612091565b90509295989b509295989b9093969950565b6000806040838503121561246e57600080fd5b82356124798161206c565b946020939093013593505050565b805161208c8161206c565b600080600080608085870312156124a857600080fd5b84516124b38161206c565b6020860151604087015191955093506124cb8161206c565b6060959095015193969295505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115612504576125046124db565b92915050565b6020808252600190820152606560f81b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b80820180821115612504576125046124db565b600060018201612560576125606124db565b5060010190565b81835260006001600160fb1b0383111561258057600080fd5b8260051b80836020870137939093016020019392505050565b8183526000602080850194508260005b858110156125d75781356125bc8161206c565b6001600160a01b0316875295820195908201906001016125a9565b509495945050505050565b6080815260006125f6608083018a8c612567565b60208382038185015261260a828a8c612567565b9150838203604085015261261f82888a612599565b8481036060860152858152869250810160005b868110156126595761ffff61264685612091565b1682529282019290820190600101612632565b509c9b505050505050505050505050565b60808152600061267e608083018a8c612599565b828103602084015261269181898b612567565b905082810360408401526126a6818789612567565b905082810360608401526126bb818587612599565b9b9a5050505050505050505050565b6040815260006126de604083018688612567565b82810360208401526126f1818587612567565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b604051610220810167ffffffffffffffff81118282101715612736576127366126fc565b60405290565b60006020828403121561274e57600080fd5b6040516020810181811067ffffffffffffffff82111715612771576127716126fc565b6040529151825250919050565b600082601f83011261278f57600080fd5b815167ffffffffffffffff808211156127aa576127aa6126fc565b604051601f8301601f19908116603f011681019082821181831017156127d2576127d26126fc565b816040528381528660208588010111156127eb57600080fd5b6127fc846020830160208901611ed9565b9695505050505050565b80516fffffffffffffffffffffffffffffffff8116811461208c57600080fd5b805164ffffffffff8116811461208c57600080fd5b60006020828403121561284d57600080fd5b815167ffffffffffffffff8082111561286557600080fd5b90830190610220828603121561287a57600080fd5b612882612712565b61288c868461273c565b815261289a60208401612487565b60208201526128ab60408401612487565b60408201526128bc60608401612487565b60608201526128cd60808401612487565b60808201526128de60a08401612487565b60a08201526128ef60c08401612487565b60c082015260e08301518281111561290657600080fd5b6129128782860161277e565b60e08301525061010083810151908201526101208084015190820152610140808401519082015261016080840151908201526101809150612954828401612806565b828201526101a09150612968828401612806565b828201526101c0915061297c828401612806565b828201526101e09150612990828401612806565b8282015261020091506129a4828401612826565b91810191909152949350505050565b6000602082840312156129c557600080fd5b5051919050565b6000602082840312156129de57600080fd5b815180151581146129ee57600080fd5b9392505050565b600060208284031215612a0757600080fd5b81516129ee8161206c565b606081526000612a2660608301888a612567565b8281036020840152612a39818789612567565b90508281036040840152612a4e818587612567565b9998505050505050505050565b606080825285519082018190526000906020906080840190828901845b82811015612a9457815184529284019290840190600101612a78565b50505083810382850152612aa9818789612567565b8481036040860152855180825283870192509083019060005b81811015612ae75783516001600160a01b031683529284019291840191600101612ac2565b50909998505050505050505050565b600060208284031215612b0857600080fd5b81356129ee8161206c565b60e081526000612b2760e083018d8f612567565b8281036020840152612b3a818c8e612567565b90508281036040840152612b4f818a8c612567565b90508281036060840152612b6481888a612567565b608084019690965250506001600160a01b039290921660a083015261ffff1660c09091015298975050505050505050565b60008251612ba7818460208701611ed9565b919091019291505056fea2646970667358221220ad3e0017c1ed127988062c43f47f2ece1ffefb759b508a20738251f3a9e3ce9d64736f6c63430008100033",
    "sourceMap": "1099:16876:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17792:4;;17799:29;;;;;;;;;;;;-1:-1:-1;;;17799:29:118;;;;;-1:-1:-1;;;;;17792:4:118;17770:10;:27;17762:67;;;;-1:-1:-1;;;17762:67:118;;;;;;;;:::i;:::-;;;;;;;;;;1099:16876;17935:30;;;;;;;;;;;-1:-1:-1;;;17935:30:118;;;;17928:38;;-1:-1:-1;;;17928:38:118;;;;17935:30;17928:38;;;:::i;11795:721::-;;;;;;:::i;:::-;;:::i;3535:882::-;;;;;;:::i;:::-;;:::i;14988:792::-;;;;;;:::i;:::-;;:::i;7847:521::-;;;;;;;;;;-1:-1:-1;7847:521:118;;;;;:::i;:::-;;:::i;1642:175::-;;;;;;;;;;-1:-1:-1;1642:175:118;;;;;:::i;:::-;;:::i;10804:647::-;;;;;;:::i;:::-;;:::i;14187:471::-;;;;;;:::i;:::-;;:::i;4680:771::-;;;;;;;;;;-1:-1:-1;4680:771:118;;;;;:::i;:::-;;:::i;2792:268::-;;;;;;:::i;:::-;;:::i;10090:407::-;;;;;;:::i;:::-;;:::i;16413:184::-;;;;;;;;;;-1:-1:-1;16413:184:118;;;;;:::i;:::-;;:::i;17102:95::-;;;;;;;;;;-1:-1:-1;17185:4:118;;17102:95;;;-1:-1:-1;;;;;17185:4:118;;;8628:51:174;;17102:95:118;;;;;8616:2:174;17102:95:118;;;12878:1000;;;;;;:::i;:::-;;:::i;2227:153::-;;;;;;;;;;;;;:::i;5728:1435::-;;;;;;;;;;-1:-1:-1;5728:1435:118;;;;;:::i;:::-;;:::i;9070:724::-;;;;;;;;;;-1:-1:-1;9070:724:118;;;;;:::i;:::-;;:::i;16900:133::-;;;;;;;;;;-1:-1:-1;16900:133:118;;;;;:::i;:::-;;:::i;11795:721::-;11935:23;11973:20;11997:23;:21;:23::i;:::-;-1:-1:-1;;;;;11997:39:118;;12037:8;11997:49;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;11997:49:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11969:77;;;;;12069:12;12060:6;:21;12056:194;;;12115:21;12124:12;12115:6;:21;:::i;:::-;12097:39;;12171:15;12158:9;:28;;12188:50;;;;;;;;;;;;;-1:-1:-1;;;12188:50:118;;;12150:89;;;;;-1:-1:-1;;;12150:89:118;;;;;;;;:::i;:::-;;12056:194;12268:4;;;;;;;;;-1:-1:-1;;;;;12268:4:118;-1:-1:-1;;;;;12268:12:118;;12288:15;12268:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12316:17;:15;:17::i;:::-;:55;;-1:-1:-1;;;12316:55:118;;;;;14090:25:174;;;14131:18;;;14124:34;;;14174:18;;;14167:34;;;-1:-1:-1;;;;;12316:27:118;;;;;;;14063:18:174;;12316:55:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12435:15;12423:9;:27;12419:90;;;12452:57;12469:10;12481:27;12493:15;12481:9;:27;:::i;:::-;12452:16;:57::i;:::-;11925:591;;11795:721;;;:::o;3535:882::-;3766:35;;;3758:49;;;;-1:-1:-1;;;3758:49:118;;;;;;;:::i;:::-;3825:36;;;3817:50;;;;-1:-1:-1;;;3817:50:118;;;;;;;:::i;:::-;3885:38;;;3877:52;;;;-1:-1:-1;;;3877:52:118;;;;;;;:::i;:::-;3940:19;3974:6;3969:88;3982:18;;;3969:88;;;4036:7;;4044:1;4036:10;;;;;;;:::i;:::-;;;;;;;4021:25;;;;;:::i;:::-;;-1:-1:-1;4002:3:118;;;;:::i;:::-;;;;3969:88;;;;4087:11;4074:9;:24;;4100:48;;;;;;;;;;;;;-1:-1:-1;;;4100:48:118;;;4066:83;;;;;-1:-1:-1;;;4066:83:118;;;;;;;;:::i;:::-;;4159:4;;;;;;;;;-1:-1:-1;;;;;4159:4:118;-1:-1:-1;;;;;4159:12:118;;4179:9;4159:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4201:17;:15;:17::i;:::-;-1:-1:-1;;;;;4201:30:118;;4232:7;;4241:10;;4253:11;;4266:13;;4201:79;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4344:11;4332:9;:23;4328:82;;;4357:53;4374:10;4386:23;4398:11;4386:9;:23;:::i;4357:53::-;3748:669;3535:882;;;;;;;;:::o;14988:792::-;15208:31;;;15200:45;;;;-1:-1:-1;;;15200:45:118;;;;;;;:::i;:::-;15263:33;;;15255:47;;;;-1:-1:-1;;;15255:47:118;;;;;;;:::i;:::-;15313:19;15347:6;15342:87;15355:18;;;15342:87;;;15408:7;;15416:1;15408:10;;;;;;;:::i;:::-;;;;;;;15394:24;;15375:3;;;;;:::i;:::-;;;;15342:87;;;;15460:11;15447:9;:24;;15473:48;;;;;;;;;;;;;-1:-1:-1;;;15473:48:118;;;15439:83;;;;;-1:-1:-1;;;15439:83:118;;;;;;;;:::i;:::-;;15532:4;;;;;;;;;-1:-1:-1;;;;;15532:4:118;-1:-1:-1;;;;;15532:12:118;;15552:11;15532:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15576:17;:15;:17::i;:::-;-1:-1:-1;;;;;15576:26:118;;15603:6;;15611:7;;15620:9;;15631:11;;15576:67;;;;;;;;;;;;;;;;;;;;;;:::i;7847:521::-;8090:17;:15;:17::i;:::-;:194;;-1:-1:-1;;;8090:194:118;;;;;18375:25:174;;;18416:18;;;18409:34;;;18459:18;;;18452:34;;;18502:18;;;18495:34;;;18545:19;;;18538:35;;;-1:-1:-1;;;;;18610:32:174;;;18589:19;;;18582:61;18692:6;18680:19;;18659;;;18652:48;8090:24:118;;;;;;;18347:19:174;;8090:194:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8294:4:118;;:21;;-1:-1:-1;;;8294:21:118;;;;;12931:25:174;;;-1:-1:-1;;;;;8294:4:118;;;;-1:-1:-1;8294:13:118;;-1:-1:-1;12904:18:174;;8294:21:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8325:36;8342:10;8354:6;8325:16;:36::i;:::-;7847:521;;;;;;;:::o;1642:175::-;3268:19:18;3291:13;;;;;;3290:14;;3336:34;;;;-1:-1:-1;3354:12:18;;3369:1;3354:12;;;;:16;3336:34;3335:108;;;-1:-1:-1;3415:4:18;1476:19:32;:23;;;3376:66:18;;-1:-1:-1;3425:12:18;;;;;:17;3376:66;3314:201;;;;-1:-1:-1;;;3314:201:18;;18913:2:174;3314:201:18;;;18895:21:174;18952:2;18932:18;;;18925:30;18991:34;18971:18;;;18964:62;-1:-1:-1;;;19042:18:174;;;19035:44;19096:19;;3314:201:18;18711:410:174;3314:201:18;3525:12;:16;;-1:-1:-1;;3525:16:18;3540:1;3525:16;;;3551:65;;;;3585:13;:20;;-1:-1:-1;;3585:20:18;;;;;3551:65;1730:4:118::1;:18:::0;;-1:-1:-1;;;;;1730:18:118;;::::1;-1:-1:-1::0;;;;;;1730:18:118;;::::1;;::::0;;;1758:16:::1;:52:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;3636:99:18;;;;3686:5;3670:21;;-1:-1:-1;;3670:21:18;;;3710:14;;-1:-1:-1;19278:36:174;;3710:14:18;;19266:2:174;19251:18;3710:14:18;;;;;;;3636:99;3258:483;1642:175:118;;:::o;10804:647::-;10951:34;;;10943:48;;;;-1:-1:-1;;;10943:48:118;;;;;;;:::i;:::-;11002:19;11036:6;11031:87;11044:18;;;11031:87;;;11097:7;;11105:1;11097:10;;;;;;;:::i;:::-;;;;;;;11083:24;;11064:3;;;;;:::i;:::-;;;;11031:87;;;;11148:11;11135:9;:24;;11161:50;;;;;;;;;;;;;-1:-1:-1;;;11161:50:118;;;11127:85;;;;;-1:-1:-1;;;11127:85:118;;;;;;;;:::i;:::-;;11222:4;;;;;;;;;-1:-1:-1;;;;;11222:4:118;-1:-1:-1;;;;;11222:12:118;;11242:11;11222:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11266:17;:15;:17::i;:::-;-1:-1:-1;;;;;11266:28:118;;11295:9;;11306:7;;11266:48;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11378:11;11366:9;:23;11362:82;;;11391:53;11408:10;11420:23;11432:11;11420:9;:23;:::i;14187:471::-;14367:6;14354:9;:19;;14375:48;;;;;;;;;;;;;-1:-1:-1;;;14375:48:118;;;14346:78;;;;;-1:-1:-1;;;14346:78:118;;;;;;;;:::i;:::-;;14434:4;;;;;;;;;-1:-1:-1;;;;;14434:4:118;-1:-1:-1;;;;;14434:12:118;;14454:6;14434:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14473:17;:15;:17::i;:::-;:58;;-1:-1:-1;;;14473:58:118;;-1:-1:-1;;;;;20136:15:174;;;14473:58:118;;;20118:34:174;20168:18;;;20161:34;;;20211:18;;;20204:34;;;20274:15;;;20254:18;;;20247:43;14473:21:118;;;;;;;20052:19:174;;14473:58:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14595:6;14583:9;:18;14579:72;;;14603:48;14620:10;14632:18;14644:6;14632:9;:18;:::i;14603:48::-;14187:471;;;;:::o;4680:771::-;4806:23;4832:17;:15;:17::i;:::-;4883:32;;-1:-1:-1;;;4883:32:118;;;;;12931:25:174;;;4806:43:118;;-1:-1:-1;4859:13:118;;-1:-1:-1;;;;;4883:21:118;;;;;12904:18:174;;4883:32:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4883:32:118;;;;;;;;;;;;:::i;:::-;:46;;;4962:27;;-1:-1:-1;;;4962:27:118;;4978:10;4962:27;;;8628:51:174;4883:46:118;;-1:-1:-1;4940:19:118;;-1:-1:-1;;;;;4962:15:118;;;;;8601:18:174;;4962:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4940:49;-1:-1:-1;5026:6:118;5126:27;;;5122:88;;-1:-1:-1;5188:11:118;5122:88;5219:63;;-1:-1:-1;;;5219:63:118;;5238:10;5219:63;;;24590:34:174;5258:4:118;24640:18:174;;;24633:43;24692:18;;;24685:34;;;-1:-1:-1;;;;;5219:18:118;;;;;24525::174;;5219:63:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5292:63:118;;-1:-1:-1;;;5292:63:118;;;;;25214:25:174;;;25255:18;;;25248:34;;;5349:4:118;25298:18:174;;;25291:60;-1:-1:-1;;;;;5292:19:118;;;;;25187:18:174;;5292:63:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5365:4:118;;:31;;-1:-1:-1;;;5365:31:118;;;;;12931:25:174;;;-1:-1:-1;;;;;5365:4:118;;;;-1:-1:-1;5365:13:118;;-1:-1:-1;12904:18:174;;5365:31:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5406:38;5423:2;5427:16;5406;:38::i;2792:268::-;2938:4;;;;;;;;;-1:-1:-1;;;;;2938:4:118;-1:-1:-1;;;;;2938:12:118;;2958:9;2938:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2980:17;:15;:17::i;:::-;:73;;-1:-1:-1;;;2980:73:118;;3006:9;2980:73;;;25591:25:174;25632:18;;;25625:34;;;-1:-1:-1;;;;;25695:32:174;;;25675:18;;;25668:60;25776:6;25764:19;;25744:18;;;25737:47;2980:25:118;;;;;;;25563:19:174;;2980:73:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10090:407;10221:6;10208:9;:19;;10229:50;;;;;;;;;;;;;-1:-1:-1;;;10229:50:118;;;10200:80;;;;;-1:-1:-1;;;10200:80:118;;;;;;;;:::i;:::-;;10290:4;;;;;;;;;-1:-1:-1;;;;;10290:4:118;-1:-1:-1;;;;;10290:12:118;;10310:6;10290:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10329:17;:15;:17::i;:::-;:41;;-1:-1:-1;;;10329:41:118;;;;;25969:25:174;;;26010:18;;;26003:34;;;-1:-1:-1;;;;;10329:23:118;;;;;;;25942:18:174;;10329:41:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10434:6;10422:9;:18;10418:72;;;10442:48;10459:10;10471:18;10483:6;10471:9;:18;:::i;10442:48::-;10090:407;;:::o;16413:184::-;2025:16;;:36;;;-1:-1:-1;;;2025:36:118;;;;929:10:33;;-1:-1:-1;;;;;2025:16:118;;:34;;:36;;;;;;;;;;;;;;:16;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2025:52:118;;2079:37;;;;;;;;;;;;;-1:-1:-1;;;2079:37:118;;;2017:100;;;;;-1:-1:-1;;;2017:100:118;;;;;;;;:::i;:::-;-1:-1:-1;16556:34:118::1;::::0;-1:-1:-1;;;16556:34:118;;-1:-1:-1;;;;;26496:32:174;;;16556:34:118::1;::::0;::::1;26478:51:174::0;26545:18;;;26538:34;;;16556:22:118;::::1;::::0;::::1;::::0;26451:18:174;;16556:34:118::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12878:1000::-:0;13059:20;;13131:34;;;13123:48;;;;-1:-1:-1;;;13123:48:118;;;;;;;:::i;:::-;13189:36;;;13181:50;;;;-1:-1:-1;;;13181:50:118;;;;;;;:::i;:::-;13247:6;13242:263;13259:20;;;13242:263;;;13320:23;:21;:23::i;:::-;-1:-1:-1;;;;;13320:39:118;;13360:9;;13370:1;13360:12;;;;;;;:::i;:::-;;;;;;;13320:53;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;13320:53:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13300:73;-1:-1:-1;13300:73:118;;-1:-1:-1;13391:7:118;;-1:-1:-1;13391:7:118;;-1:-1:-1;13399:1:118;13391:10;;;;;;;:::i;:::-;;;;;;;:25;13387:108;;;13468:12;13455:7;;13463:1;13455:10;;;;;;;:::i;:::-;;;;;;;:25;;;;:::i;:::-;13436:44;;;;:::i;:::-;;;13387:108;13281:3;;;;:::i;:::-;;;;13242:263;;;;13535:15;13522:9;:28;;13552:50;;;;;;;;;;;;;-1:-1:-1;;;13552:50:118;;;13514:89;;;;;-1:-1:-1;;;13514:89:118;;;;;;;;:::i;:::-;;13622:4;;;;;;;;;-1:-1:-1;;;;;13622:4:118;-1:-1:-1;;;;;13622:12:118;;13642:15;13622:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13670:17;:15;:17::i;:::-;-1:-1:-1;;;;;13670:32:118;;13703:9;;13714:7;;13723:9;;13670:63;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13797:15;13785:9;:27;13781:90;;;13814:57;13831:10;13843:27;13855:15;13843:9;:27;:::i;13814:57::-;13049:829;;12878:1000;;;;;;:::o;2227:153::-;1869:16;;:34;;;-1:-1:-1;;;1869:34:118;;;;929:10:33;;-1:-1:-1;;;;;1869:16:118;;:32;;:34;;;;;;;;;;;;;;:16;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1869:50:118;;1921:33;;;;;;;;;;;;;-1:-1:-1;;;1921:33:118;;;1861:94;;;;;-1:-1:-1;;;1861:94:118;;;;;;;;:::i;:::-;-1:-1:-1;2301:4:118::1;::::0;2314:16:::1;::::0;:39:::1;::::0;;-1:-1:-1;;;2314:39:118;;;;-1:-1:-1;;;;;2301:4:118;;::::1;::::0;:12:::1;::::0;2314:16:::1;::::0;:37:::1;::::0;:39:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:16;:39:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2301:72;::::0;-1:-1:-1;;;;;;2301:72:118::1;::::0;;;;;;-1:-1:-1;;;;;26496:32:174;;;2301:72:118::1;::::0;::::1;26478:51:174::0;-1:-1:-1;;26545:18:174;;;26538:34;26451:18;;2301:72:118::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2227:153::o:0;5728:1435::-;5903:35;;;5895:49;;;;-1:-1:-1;;;5895:49:118;;;;;;;:::i;:::-;5962:28;;;5954:42;;;;-1:-1:-1;;;5954:42:118;;;;;;;:::i;:::-;6015:13;;;;6147:7;6133:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6133:29:118;-1:-1:-1;6109:53:118;-1:-1:-1;6172:33:118;6222:7;6208:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6208:29:118;;6172:65;;6256:23;6282:17;:15;:17::i;:::-;6256:43;;6315:6;6310:611;6327:18;;;6310:611;;;6382:10;-1:-1:-1;;;;;6382:21:118;;6404:10;;6415:1;6404:13;;;;;;;:::i;:::-;;;;;;;6382:36;;;;;;;;;;;;;12931:25:174;;12919:2;12904:18;;12785:177;6382:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6382:36:118;;;;;;;;;;;;:::i;:::-;:50;;;6461:27;;-1:-1:-1;;;6461:27:118;;6477:10;6461:27;;;8628:51:174;6382:50:118;;-1:-1:-1;;;;;;6461:15:118;;;;;8601:18:174;;6461:27:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6447:41;;6524:7;;6532:1;6524:10;;;;;;;:::i;:::-;;;;;;;6502:16;6519:1;6502:19;;;;;;;;:::i;:::-;;;;;;:32;;;;;-1:-1:-1;;6636:7:118;;6644:1;6636:10;;;;;;;:::i;:::-;;;;;;;:31;6632:103;;6709:11;6687:16;6704:1;6687:19;;;;;;;;:::i;:::-;;;;;;:33;;;;;6632:103;6773:16;6790:1;6773:19;;;;;;;;:::i;:::-;;;;;;;6748:44;;;;;:::i;:::-;;;6807:5;-1:-1:-1;;;;;6807:18:118;;6826:10;6846:4;6853:16;6870:1;6853:19;;;;;;;;:::i;:::-;;;;;;;;;;;6807:66;;-1:-1:-1;;;;;;6807:66:118;;;;;;;-1:-1:-1;;;;;24608:15:174;;;6807:66:118;;;24590:34:174;24660:15;;;;24640:18;;;24633:43;24692:18;;;24685:34;24525:18;;6807:66:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6905:4;6887;6892:1;6887:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6887:23:118;;;:7;;;;;;;;;;;:23;6347:3;;;;:::i;:::-;;;;6310:611;;;-1:-1:-1;6931:60:118;;-1:-1:-1;;;6931:60:118;;-1:-1:-1;;;;;6931:24:118;;;;;:60;;6956:16;;6974:10;;;;6986:4;;6931:60;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7001:4:118;;:36;;-1:-1:-1;;;7001:36:118;;;;;12931:25:174;;;-1:-1:-1;;;;;7001:4:118;;;;-1:-1:-1;7001:13:118;;-1:-1:-1;12904:18:174;;7001:36:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7053:6;7048:108;7065:14;;;7048:108;;;7100:45;7117:3;;7121:1;7117:6;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;7125:16;7142:1;7125:19;;;;;;;;:::i;:::-;;;;;;;7100:16;:45::i;:::-;7081:3;;;;:::i;:::-;;;;7048:108;;;;5885:1278;;;;;;5728:1435;;;;;;:::o;9070:724::-;9369:17;:15;:17::i;:::-;-1:-1:-1;;;;;9369:29:118;;9412:7;;9433:8;;9455:11;;9480:10;;9504:8;9526:10;9550:12;9369:203;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9583:19;9618:6;9613:88;9626:18;;;9613:88;;;9680:7;;9688:1;9680:10;;;;;;;:::i;:::-;;;;;;;9665:25;;;;;:::i;:::-;;-1:-1:-1;9646:3:118;;;;:::i;:::-;;;;9613:88;;;-1:-1:-1;9710:4:118;;:26;;-1:-1:-1;;;9710:26:118;;;;;12931:25:174;;;-1:-1:-1;;;;;9710:4:118;;;;:13;;12904:18:174;;9710:26:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9746:41;9763:10;9775:11;9746:16;:41::i;:::-;9353:441;9070:724;;;;;;;;;;;:::o;16900:133::-;2025:16;;:36;;;-1:-1:-1;;;2025:36:118;;;;929:10:33;;-1:-1:-1;;;;;2025:16:118;;:34;;:36;;;;;;;;;;;;;;:16;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2025:52:118;;2079:37;;;;;;;;;;;;;-1:-1:-1;;;2079:37:118;;;2017:100;;;;;-1:-1:-1;;;2017:100:118;;;;;;;;:::i;:::-;;16998:28:::1;17015:2;17019:6;16998:16;:28::i;17425:160::-:0;17537:16;;:39;;;-1:-1:-1;;;17537:39:118;;;;17481:18;;-1:-1:-1;;;;;17537:16:118;;:37;;:39;;;;;;;;;;;;;;:16;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17511:66;;17425:160;:::o;17244:136::-;17338:16;;:33;;;-1:-1:-1;;;17338:33:118;;;;17294:12;;-1:-1:-1;;;;;17338:16:118;;:31;;:33;;;;;;;;;;;;;;:16;:33;;;;;;;;;;;;;;15940:190;16053:12;;;16013;16053;;;;;;;;;-1:-1:-1;;;;;16031:7:118;;;16046:5;;16031:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16012:54;;;16084:7;16093:29;;;;;;;;;;;;;-1:-1:-1;;;16093:29:118;;;16076:47;;;;;-1:-1:-1;;;16076:47:118;;;;;;;;:::i;14:250:174:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:174;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:174;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:174:o;670:316::-;747:6;755;763;816:2;804:9;795:7;791:23;787:32;784:52;;;832:1;829;822:12;784:52;-1:-1:-1;;855:23:174;;;925:2;910:18;;897:32;;-1:-1:-1;976:2:174;961:18;;;948:32;;670:316;-1:-1:-1;670:316:174:o;991:367::-;1054:8;1064:6;1118:3;1111:4;1103:6;1099:17;1095:27;1085:55;;1136:1;1133;1126:12;1085:55;-1:-1:-1;1159:20:174;;1202:18;1191:30;;1188:50;;;1234:1;1231;1224:12;1188:50;1271:4;1263:6;1259:17;1247:29;;1331:3;1324:4;1314:6;1311:1;1307:14;1299:6;1295:27;1291:38;1288:47;1285:67;;;1348:1;1345;1338:12;1285:67;991:367;;;;;:::o;1363:1403::-;1556:6;1564;1572;1580;1588;1596;1604;1612;1665:3;1653:9;1644:7;1640:23;1636:33;1633:53;;;1682:1;1679;1672:12;1633:53;1722:9;1709:23;1751:18;1792:2;1784:6;1781:14;1778:34;;;1808:1;1805;1798:12;1778:34;1847:70;1909:7;1900:6;1889:9;1885:22;1847:70;:::i;:::-;1936:8;;-1:-1:-1;1821:96:174;-1:-1:-1;2024:2:174;2009:18;;1996:32;;-1:-1:-1;2040:16:174;;;2037:36;;;2069:1;2066;2059:12;2037:36;2108:72;2172:7;2161:8;2150:9;2146:24;2108:72;:::i;:::-;2199:8;;-1:-1:-1;2082:98:174;-1:-1:-1;2287:2:174;2272:18;;2259:32;;-1:-1:-1;2303:16:174;;;2300:36;;;2332:1;2329;2322:12;2300:36;2371:72;2435:7;2424:8;2413:9;2409:24;2371:72;:::i;:::-;2462:8;;-1:-1:-1;2345:98:174;-1:-1:-1;2550:2:174;2535:18;;2522:32;;-1:-1:-1;2566:16:174;;;2563:36;;;2595:1;2592;2585:12;2563:36;;2634:72;2698:7;2687:8;2676:9;2672:24;2634:72;:::i;:::-;1363:1403;;;;-1:-1:-1;1363:1403:174;;-1:-1:-1;1363:1403:174;;;;;;2725:8;-1:-1:-1;;;1363:1403:174:o;4180:131::-;-1:-1:-1;;;;;4255:31:174;;4245:42;;4235:70;;4301:1;4298;4291:12;4316:134;4384:20;;4413:31;4384:20;4413:31;:::i;:::-;4316:134;;;:::o;4455:159::-;4522:20;;4582:6;4571:18;;4561:29;;4551:57;;4604:1;4601;4594:12;4619:663;4731:6;4739;4747;4755;4763;4771;4779;4832:3;4820:9;4811:7;4807:23;4803:33;4800:53;;;4849:1;4846;4839:12;4800:53;4885:9;4872:23;4862:33;;4942:2;4931:9;4927:18;4914:32;4904:42;;4993:2;4982:9;4978:18;4965:32;4955:42;;5044:2;5033:9;5029:18;5016:32;5006:42;;5095:3;5084:9;5080:19;5067:33;5057:43;;5150:3;5139:9;5135:19;5122:33;5164:31;5189:5;5164:31;:::i;:::-;5214:5;-1:-1:-1;5238:38:174;5271:3;5256:19;;5238:38;:::i;:::-;5228:48;;4619:663;;;;;;;;;;:::o;5287:388::-;5355:6;5363;5416:2;5404:9;5395:7;5391:23;5387:32;5384:52;;;5432:1;5429;5422:12;5384:52;5471:9;5458:23;5490:31;5515:5;5490:31;:::i;:::-;5540:5;-1:-1:-1;5597:2:174;5582:18;;5569:32;5610:33;5569:32;5610:33;:::i;:::-;5662:7;5652:17;;;5287:388;;;;;:::o;5680:773::-;5802:6;5810;5818;5826;5879:2;5867:9;5858:7;5854:23;5850:32;5847:52;;;5895:1;5892;5885:12;5847:52;5935:9;5922:23;5964:18;6005:2;5997:6;5994:14;5991:34;;;6021:1;6018;6011:12;5991:34;6060:70;6122:7;6113:6;6102:9;6098:22;6060:70;:::i;:::-;6149:8;;-1:-1:-1;6034:96:174;-1:-1:-1;6237:2:174;6222:18;;6209:32;;-1:-1:-1;6253:16:174;;;6250:36;;;6282:1;6279;6272:12;6250:36;;6321:72;6385:7;6374:8;6363:9;6359:24;6321:72;:::i;:::-;5680:773;;;;-1:-1:-1;6412:8:174;-1:-1:-1;;;;5680:773:174:o;6458:525::-;6544:6;6552;6560;6568;6621:3;6609:9;6600:7;6596:23;6592:33;6589:53;;;6638:1;6635;6628:12;6589:53;6677:9;6664:23;6696:31;6721:5;6696:31;:::i;:::-;6746:5;-1:-1:-1;6798:2:174;6783:18;;6770:32;;-1:-1:-1;6849:2:174;6834:18;;6821:32;;-1:-1:-1;6905:2:174;6890:18;;6877:32;6918:33;6877:32;6918:33;:::i;:::-;6458:525;;;;-1:-1:-1;6458:525:174;;-1:-1:-1;;6458:525:174:o;6988:383::-;7065:6;7073;7081;7134:2;7122:9;7113:7;7109:23;7105:32;7102:52;;;7150:1;7147;7140:12;7102:52;7186:9;7173:23;7163:33;;7243:2;7232:9;7228:18;7215:32;7205:42;;7297:2;7286:9;7282:18;7269:32;7310:31;7335:5;7310:31;:::i;:::-;7360:5;7350:15;;;6988:383;;;;;:::o;7376:387::-;7452:6;7460;7468;7521:2;7509:9;7500:7;7496:23;7492:32;7489:52;;;7537:1;7534;7527:12;7489:52;7573:9;7560:23;7550:33;;7633:2;7622:9;7618:18;7605:32;7646:31;7671:5;7646:31;:::i;:::-;7696:5;-1:-1:-1;7720:37:174;7753:2;7738:18;;7720:37;:::i;:::-;7710:47;;7376:387;;;;;:::o;7768:248::-;7836:6;7844;7897:2;7885:9;7876:7;7872:23;7868:32;7865:52;;;7913:1;7910;7903:12;7865:52;-1:-1:-1;;7936:23:174;;;8006:2;7991:18;;;7978:32;;-1:-1:-1;7768:248:174:o;8021:456::-;8098:6;8106;8114;8167:2;8155:9;8146:7;8142:23;8138:32;8135:52;;;8183:1;8180;8173:12;8135:52;8222:9;8209:23;8241:31;8266:5;8241:31;:::i;:::-;8291:5;-1:-1:-1;8348:2:174;8333:18;;8320:32;8361:33;8320:32;8361:33;:::i;:::-;8021:456;;8413:7;;-1:-1:-1;;;8467:2:174;8452:18;;;;8439:32;;8021:456::o;8690:1088::-;8848:6;8856;8864;8872;8880;8888;8941:2;8929:9;8920:7;8916:23;8912:32;8909:52;;;8957:1;8954;8947:12;8909:52;8997:9;8984:23;9026:18;9067:2;9059:6;9056:14;9053:34;;;9083:1;9080;9073:12;9053:34;9122:70;9184:7;9175:6;9164:9;9160:22;9122:70;:::i;:::-;9211:8;;-1:-1:-1;9096:96:174;-1:-1:-1;9299:2:174;9284:18;;9271:32;;-1:-1:-1;9315:16:174;;;9312:36;;;9344:1;9341;9334:12;9312:36;9383:72;9447:7;9436:8;9425:9;9421:24;9383:72;:::i;:::-;9474:8;;-1:-1:-1;9357:98:174;-1:-1:-1;9562:2:174;9547:18;;9534:32;;-1:-1:-1;9578:16:174;;;9575:36;;;9607:1;9604;9597:12;9575:36;;9646:72;9710:7;9699:8;9688:9;9684:24;9646:72;:::i;:::-;8690:1088;;;;-1:-1:-1;8690:1088:174;;-1:-1:-1;8690:1088:174;;9737:8;;8690:1088;-1:-1:-1;;;8690:1088:174:o;10876:1584::-;11096:6;11104;11112;11120;11128;11136;11144;11152;11160;11168;11176:7;11230:3;11218:9;11209:7;11205:23;11201:33;11198:53;;;11247:1;11244;11237:12;11198:53;11270:18;11328:2;11316:9;11303:23;11300:31;11297:51;;;11344:1;11341;11334:12;11297:51;11383:87;11462:7;11449:9;11436:23;11425:9;11421:39;11383:87;:::i;:::-;11489:8;;-1:-1:-1;11516:8:174;-1:-1:-1;11567:2:174;11552:18;;11539:32;11536:40;-1:-1:-1;11533:60:174;;;11589:1;11586;11579:12;11533:60;11628:96;11716:7;11709:2;11698:9;11694:18;11681:32;11670:9;11666:48;11628:96;:::i;:::-;11743:8;;-1:-1:-1;11770:8:174;-1:-1:-1;11821:2:174;11806:18;;11793:32;11790:40;-1:-1:-1;11787:60:174;;;11843:1;11840;11833:12;11787:60;11882:96;11970:7;11963:2;11952:9;11948:18;11935:32;11924:9;11920:48;11882:96;:::i;:::-;11997:8;;-1:-1:-1;12024:8:174;-1:-1:-1;12075:2:174;12060:18;;12047:32;12044:40;-1:-1:-1;12041:60:174;;;12097:1;12094;12087:12;12041:60;;12136:96;12224:7;12217:2;12206:9;12202:18;12189:32;12178:9;12174:48;12136:96;:::i;:::-;12251:8;;-1:-1:-1;12278:8:174;-1:-1:-1;12333:3:174;12318:19;;12305:33;;-1:-1:-1;12357:39:174;12391:3;12376:19;;12357:39;:::i;:::-;12347:49;;12416:38;12449:3;12438:9;12434:19;12416:38;:::i;:::-;12405:49;;10876:1584;;;;;;;;;;;;;;:::o;12465:315::-;12533:6;12541;12594:2;12582:9;12573:7;12569:23;12565:32;12562:52;;;12610:1;12607;12600:12;12562:52;12649:9;12636:23;12668:31;12693:5;12668:31;:::i;:::-;12718:5;12770:2;12755:18;;;;12742:32;;-1:-1:-1;;;12465:315:174:o;12967:138::-;13046:13;;13068:31;13046:13;13068:31;:::i;13110:508::-;13207:6;13215;13223;13231;13284:3;13272:9;13263:7;13259:23;13255:33;13252:53;;;13301:1;13298;13291:12;13252:53;13333:9;13327:16;13352:31;13377:5;13352:31;:::i;:::-;13447:2;13432:18;;13426:25;13496:2;13481:18;;13475:25;13402:5;;-1:-1:-1;13426:25:174;-1:-1:-1;13509:33:174;13475:25;13509:33;:::i;:::-;13608:2;13593:18;;;;13587:25;13110:508;;;;-1:-1:-1;;;13110:508:174:o;13623:127::-;13684:10;13679:3;13675:20;13672:1;13665:31;13715:4;13712:1;13705:15;13739:4;13736:1;13729:15;13755:128;13822:9;;;13843:11;;;13840:37;;;13857:18;;:::i;:::-;13755:128;;;;:::o;14212:324::-;14414:2;14396:21;;;14453:1;14433:18;;;14426:29;-1:-1:-1;;;14486:2:174;14471:18;;14464:31;14527:2;14512:18;;14212:324::o;14541:127::-;14602:10;14597:3;14593:20;14590:1;14583:31;14633:4;14630:1;14623:15;14657:4;14654:1;14647:15;14673:125;14738:9;;;14759:10;;;14756:36;;;14772:18;;:::i;14803:135::-;14842:3;14863:17;;;14860:43;;14883:18;;:::i;:::-;-1:-1:-1;14930:1:174;14919:13;;14803:135::o;14943:311::-;15031:19;;;15013:3;-1:-1:-1;;;;;15062:31:174;;15059:51;;;15106:1;15103;15096:12;15059:51;15142:6;15139:1;15135:14;15194:8;15187:5;15180:4;15175:3;15171:14;15158:45;15223:18;;;;15243:4;15219:29;;14943:311;-1:-1:-1;;;14943:311:174:o;15259:522::-;15359:6;15354:3;15347:19;15329:3;15385:4;15414:2;15409:3;15405:12;15398:19;;15440:5;15463:1;15473:283;15487:6;15484:1;15481:13;15473:283;;;15564:6;15551:20;15584:33;15609:7;15584:33;:::i;:::-;-1:-1:-1;;;;;15642:33:174;15630:46;;15696:12;;;;15731:15;;;;15672:1;15502:9;15473:283;;;-1:-1:-1;15772:3:174;;15259:522;-1:-1:-1;;;;;15259:522:174:o;15786:1283::-;16237:3;16226:9;16219:22;16200:4;16264:74;16333:3;16322:9;16318:19;16310:6;16302;16264:74;:::i;:::-;16357:2;16407:9;16399:6;16395:22;16390:2;16379:9;16375:18;16368:50;16441:61;16495:6;16487;16479;16441:61;:::i;:::-;16427:75;;16550:9;16542:6;16538:22;16533:2;16522:9;16518:18;16511:50;16584:61;16638:6;16630;16622;16584:61;:::i;:::-;16681:22;;;16676:2;16661:18;;16654:50;16739:22;;;16815:6;;-1:-1:-1;16777:15:174;;16839:1;16849:194;16863:6;16860:1;16857:13;16849:194;;;16955:6;16928:25;16946:6;16928:25;:::i;:::-;16924:38;16912:51;;17018:15;;;;16983:12;;;;16885:1;16878:9;16849:194;;;-1:-1:-1;17060:3:174;15786:1283;-1:-1:-1;;;;;;;;;;;;15786:1283:174:o;17074:983::-;17527:3;17516:9;17509:22;17490:4;17554:74;17623:3;17612:9;17608:19;17600:6;17592;17554:74;:::i;:::-;17676:9;17668:6;17664:22;17659:2;17648:9;17644:18;17637:50;17710:61;17764:6;17756;17748;17710:61;:::i;:::-;17696:75;;17819:9;17811:6;17807:22;17802:2;17791:9;17787:18;17780:50;17853:61;17907:6;17899;17891;17853:61;:::i;:::-;17839:75;;17962:9;17954:6;17950:22;17945:2;17934:9;17930:18;17923:50;17990:61;18044:6;18036;18028;17990:61;:::i;:::-;17982:69;17074:983;-1:-1:-1;;;;;;;;;;;17074:983:174:o;19325:519::-;19602:2;19591:9;19584:21;19565:4;19628:73;19697:2;19686:9;19682:18;19674:6;19666;19628:73;:::i;:::-;19749:9;19741:6;19737:22;19732:2;19721:9;19717:18;19710:50;19777:61;19831:6;19823;19815;19777:61;:::i;:::-;19769:69;19325:519;-1:-1:-1;;;;;;;19325:519:174:o;20301:127::-;20362:10;20357:3;20353:20;20350:1;20343:31;20393:4;20390:1;20383:15;20417:4;20414:1;20407:15;20433:250;20500:2;20494:9;20542:6;20530:19;;20579:18;20564:34;;20600:22;;;20561:62;20558:88;;;20626:18;;:::i;:::-;20662:2;20655:22;20433:250;:::o;20688:426::-;20769:5;20817:4;20805:9;20800:3;20796:19;20792:30;20789:50;;;20835:1;20832;20825:12;20789:50;20868:2;20862:9;20910:4;20902:6;20898:17;20981:6;20969:10;20966:22;20945:18;20933:10;20930:34;20927:62;20924:88;;;20992:18;;:::i;:::-;21028:2;21021:22;21091:16;;21076:32;;-1:-1:-1;21061:6:174;20688:426;-1:-1:-1;20688:426:174:o;21119:699::-;21173:5;21226:3;21219:4;21211:6;21207:17;21203:27;21193:55;;21244:1;21241;21234:12;21193:55;21273:6;21267:13;21299:18;21336:2;21332;21329:10;21326:36;;;21342:18;;:::i;:::-;21417:2;21411:9;21385:2;21471:13;;-1:-1:-1;;21467:22:174;;;21491:2;21463:31;21459:40;21447:53;;;21515:18;;;21535:22;;;21512:46;21509:72;;;21561:18;;:::i;:::-;21601:10;21597:2;21590:22;21636:2;21628:6;21621:18;21682:3;21675:4;21670:2;21662:6;21658:15;21654:26;21651:35;21648:55;;;21699:1;21696;21689:12;21648:55;21712:76;21785:2;21778:4;21770:6;21766:17;21759:4;21751:6;21747:17;21712:76;:::i;:::-;21806:6;21119:699;-1:-1:-1;;;;;;21119:699:174:o;21823:192::-;21902:13;;21955:34;21944:46;;21934:57;;21924:85;;22005:1;22002;21995:12;22020:169;22098:13;;22151:12;22140:24;;22130:35;;22120:63;;22179:1;22176;22169:12;22194:1962;22290:6;22343:2;22331:9;22322:7;22318:23;22314:32;22311:52;;;22359:1;22356;22349:12;22311:52;22392:9;22386:16;22421:18;22462:2;22454:6;22451:14;22448:34;;;22478:1;22475;22468:12;22448:34;22501:22;;;;22557:6;22539:16;;;22535:29;22532:49;;;22577:1;22574;22567:12;22532:49;22603:17;;:::i;:::-;22643:65;22700:7;22696:2;22643:65;:::i;:::-;22636:5;22629:80;22741:42;22779:2;22775;22771:11;22741:42;:::i;:::-;22736:2;22729:5;22725:14;22718:66;22816:42;22854:2;22850;22846:11;22816:42;:::i;:::-;22811:2;22804:5;22800:14;22793:66;22891:42;22929:2;22925;22921:11;22891:42;:::i;:::-;22886:2;22879:5;22875:14;22868:66;22967:43;23005:3;23001:2;22997:12;22967:43;:::i;:::-;22961:3;22954:5;22950:15;22943:68;23044:43;23082:3;23078:2;23074:12;23044:43;:::i;:::-;23038:3;23031:5;23027:15;23020:68;23121:43;23159:3;23155:2;23151:12;23121:43;:::i;:::-;23115:3;23108:5;23104:15;23097:68;23204:3;23200:2;23196:12;23190:19;23234:2;23224:8;23221:16;23218:36;;;23250:1;23247;23240:12;23218:36;23287:56;23335:7;23324:8;23320:2;23316:17;23287:56;:::i;:::-;23281:3;23270:15;;23263:81;-1:-1:-1;23363:3:174;23404:11;;;23398:18;23382:14;;;23375:42;23436:3;23477:11;;;23471:18;23455:14;;;23448:42;23509:3;23550:11;;;23544:18;23528:14;;;23521:42;23582:3;23623:11;;;23617:18;23601:14;;;23594:42;23655:3;;-1:-1:-1;23690:42:174;23720:11;;;23690:42;:::i;:::-;23685:2;23678:5;23674:14;23667:66;23752:3;23742:13;;23787:42;23825:2;23821;23817:11;23787:42;:::i;:::-;23782:2;23775:5;23771:14;23764:66;23849:3;23839:13;;23884:42;23922:2;23918;23914:11;23884:42;:::i;:::-;23879:2;23872:5;23868:14;23861:66;23947:3;23936:14;;23983:43;24021:3;24017:2;24013:12;23983:43;:::i;:::-;23977:3;23970:5;23966:15;23959:68;24047:3;24036:14;;24083:42;24120:3;24116:2;24112:12;24083:42;:::i;:::-;24066:15;;;24059:67;;;;24070:5;22194:1962;-1:-1:-1;;;;22194:1962:174:o;24161:184::-;24231:6;24284:2;24272:9;24263:7;24259:23;24255:32;24252:52;;;24300:1;24297;24290:12;24252:52;-1:-1:-1;24323:16:174;;24161:184;-1:-1:-1;24161:184:174:o;24730:277::-;24797:6;24850:2;24838:9;24829:7;24825:23;24821:32;24818:52;;;24866:1;24863;24856:12;24818:52;24898:9;24892:16;24951:5;24944:13;24937:21;24930:5;24927:32;24917:60;;24973:1;24970;24963:12;24917:60;24996:5;24730:277;-1:-1:-1;;;24730:277:174:o;26048:251::-;26118:6;26171:2;26159:9;26150:7;26146:23;26142:32;26139:52;;;26187:1;26184;26177:12;26139:52;26219:9;26213:16;26238:31;26263:5;26238:31;:::i;26583:750::-;26948:2;26937:9;26930:21;26911:4;26974:73;27043:2;27032:9;27028:18;27020:6;27012;26974:73;:::i;:::-;27095:9;27087:6;27083:22;27078:2;27067:9;27063:18;27056:50;27129:61;27183:6;27175;27167;27129:61;:::i;:::-;27115:75;;27238:9;27230:6;27226:22;27221:2;27210:9;27206:18;27199:50;27266:61;27320:6;27312;27304;27266:61;:::i;:::-;27258:69;26583:750;-1:-1:-1;;;;;;;;;26583:750:174:o;27338:1416::-;27694:2;27706:21;;;27776:13;;27679:18;;;27798:22;;;27646:4;;27874;;27851:3;27836:19;;;27901:15;;;27646:4;27944:169;27958:6;27955:1;27952:13;27944:169;;;28019:13;;28007:26;;28053:12;;;;28088:15;;;;27980:1;27973:9;27944:169;;;27948:3;;;28158:9;28153:3;28149:19;28144:2;28133:9;28129:18;28122:47;28192:58;28246:3;28238:6;28230;28192:58;:::i;:::-;28286:22;;;28281:2;28266:18;;28259:50;28362:13;;28384:24;;;28466:15;;;;-1:-1:-1;28426:15:174;;;;28501:1;28511:215;28527:8;28522:3;28519:17;28511:215;;;28600:15;;-1:-1:-1;;;;;28596:41:174;28582:56;;28699:17;;;;28660:14;;;;28634:1;28546:11;28511:215;;;-1:-1:-1;28743:5:174;;27338:1416;-1:-1:-1;;;;;;;;;27338:1416:174:o;28759:247::-;28818:6;28871:2;28859:9;28850:7;28846:23;28842:32;28839:52;;;28887:1;28884;28877:12;28839:52;28926:9;28913:23;28945:31;28970:5;28945:31;:::i;29011:1238::-;29547:3;29536:9;29529:22;29510:4;29574:74;29643:3;29632:9;29628:19;29620:6;29612;29574:74;:::i;:::-;29696:9;29688:6;29684:22;29679:2;29668:9;29664:18;29657:50;29730:61;29784:6;29776;29768;29730:61;:::i;:::-;29716:75;;29839:9;29831:6;29827:22;29822:2;29811:9;29807:18;29800:50;29873:61;29927:6;29919;29911;29873:61;:::i;:::-;29859:75;;29982:9;29974:6;29970:22;29965:2;29954:9;29950:18;29943:50;30010:61;30064:6;30056;30048;30010:61;:::i;:::-;30102:3;30087:19;;30080:35;;;;-1:-1:-1;;;;;;;30152:32:174;;;;30172:3;30131:19;;30124:61;30235:6;30222:20;30216:3;30201:19;;;30194:49;30002:69;29011:1238;-1:-1:-1;;;;;;;;29011:1238:174:o;30254:287::-;30383:3;30421:6;30415:13;30437:66;30496:6;30491:3;30484:4;30476:6;30472:17;30437:66;:::i;:::-;30519:16;;;;;30254:287;-1:-1:-1;;30254:287:174:o",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "authorizeExecutionDelegate()": "caaabc60",
    "batchBidETH(address[],uint256[],uint256[],address[])": "31a9b157",
    "batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": "d0fee568",
    "batchDepositETH(uint256[],uint256[],address[],uint16[])": "1976c7ba",
    "batchRefinanceETH(uint256[],uint256[],uint256[])": "bba6bc6d",
    "batchRepayETH(uint256[],uint256[])": "5a953999",
    "batchWithdrawETH(uint256[],uint256[],address[])": "ced46f82",
    "bidETH(address,uint256,uint256,address)": "664054ce",
    "borrowETH(uint256,uint256,uint256,uint256,uint256,address,uint16)": "35f9a701",
    "depositETH(uint256,address,uint16)": "76e13af1",
    "emergencyEtherTransfer(address,uint256)": "eed88b8d",
    "emergencyTokenTransfer(address,address,uint256)": "a3d5b255",
    "getWETHAddress()": "affa8817",
    "initialize(address,address)": "485cc955",
    "refinanceETH(uint256,uint256,uint256)": "0572c30f",
    "repayETH(uint256,uint256)": "7f185c1e",
    "withdrawETH(uint256,uint256,address)": "6a41a61b"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[],\"name\":\"authorizeExecutionDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"assets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"}],\"name\":\"batchBidETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"tokenValues\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"batchBorrowETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"onBehalfOfs\",\"type\":\"address[]\"},{\"internalType\":\"uint16[]\",\"name\":\"referralCodes\",\"type\":\"uint16[]\"}],\"name\":\"batchDepositETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"durations\",\"type\":\"uint256[]\"}],\"name\":\"batchRefinanceETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"borrowIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"batchRepayETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"reserveIds\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"tos\",\"type\":\"address[]\"}],\"name\":\"batchWithdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"}],\"name\":\"bidETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"borrowETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"onBehalfOf\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"referralCode\",\"type\":\"uint16\"}],\"name\":\"depositETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyEtherTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"emergencyTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWETHAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"weth\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"addressProvider\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"refinanceETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"borrowId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"repayETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"authorizeExecutionDelegate()\":{\"details\":\"Authorizes execution delegate to perform WETH transactions*\"},\"batchBidETH(address[],uint256[],uint256[],address[])\":{\"details\":\"batch bid purchases the underlying collatearls of a defaulted borrows.\",\"params\":{\"amounts\":\"the payment amounts\",\"assets\":\"addresses of the asset contracts used for payment\",\"borrowIds\":\"the ids of the defaulted borrows\",\"onBehalfOfs\":\"The addresses to receive the NFTs.\"}},\"batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)\":{\"details\":\"batch borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\",\"params\":{\"amounts\":\"the amounts of ETH to borrow\",\"duration\":\"The duration of the loans, 0 if open-ended\",\"onBehalfOf\":\"The address to receive the loans.\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards\",\"reserveIds\":\"The ids of the reserves to borrow against. \",\"tokenIds\":\"The tokenIds of the ERC721 / ERC1155 tokens to be deposited. \",\"tokenValues\":\"The numbers of same-value tokens supplied (0 implies ERC721)\"}},\"batchDepositETH(uint256[],uint256[],address[],uint16[])\":{\"details\":\"batch deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.\",\"params\":{\"amounts\":\"the amounts to be deposited\",\"onBehalfOfs\":\"addresses of the users who will receive the fTokens representing the deposit\",\"referralCodes\":\"integrators are assigned a referral code and can potentially receive rewards.*\",\"reserveIds\":\"the ids of the target reserves\"}},\"batchRefinanceETH(uint256[],uint256[],uint256[])\":{\"details\":\"batch refinances borrows on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amounts\":\"the borrow amounts of the refinanced loans\",\"borrowIds\":\"the ids of the loans to be refinanced\",\"durations\":\"The durations of the refinanced loans, 0 if open-ended\"}},\"batchRepayETH(uint256[],uint256[])\":{\"details\":\"batch repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amounts\":\"the amounts to repay, or uint256(-1) if the user wants to repay everything\",\"borrowIds\":\"the ids of the borrows to repay\"}},\"batchWithdrawETH(uint256[],uint256[],address[])\":{\"details\":\"batch withdraws the WETH _reserves of msg.sender.\",\"params\":{\"amounts\":\"amounts of aWETH to withdraw and receive native ETH\",\"reserveIds\":\"the ids of the target reserves\",\"tos\":\"addresses of the users who will receive native ETH\"}},\"bidETH(address,uint256,uint256,address)\":{\"details\":\"bid purchases the underlying collatearl of a defaulted borrow.\",\"params\":{\"amount\":\"the payment amount\",\"asset\":\"address of the asset contract used for payment\",\"borrowId\":\"the id of the defaulted borrow\",\"onBehalfOf\":\"The address to receive the NFT.\"}},\"borrowETH(uint256,uint256,uint256,uint256,uint256,address,uint16)\":{\"details\":\"borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.\",\"params\":{\"amount\":\"the amount of ETH to borrow\",\"duration\":\"The duration of the loan, 0 if open-ended\",\"onBehalfOf\":\"The address to receive the loan.\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards\",\"reserveId\":\"The id of the reserve to borrow against. \",\"tokenId\":\"The tokenId of the ERC721 / ERC1155 token to be deposited. \",\"tokenValue\":\"The number of same-value tokens supplied (0 implies ERC721)\"}},\"depositETH(uint256,address,uint16)\":{\"details\":\"deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.\",\"params\":{\"onBehalfOf\":\"address of the user who will receive the fTokens representing the deposit\",\"referralCode\":\"integrators are assigned a referral code and can potentially receive rewards.*\",\"reserveId\":\"the id of the target reserve\"}},\"emergencyEtherTransfer(address,uint256)\":{\"details\":\"transfer native Ether from the utility contract, for native Ether recovery in case of stuck Ether due selfdestructs or transfer ether to pre-computated contract address before deployment.\",\"params\":{\"amount\":\"amount to send\",\"to\":\"recipient of the transfer\"}},\"emergencyTokenTransfer(address,address,uint256)\":{\"details\":\"transfer ERC20 from the utility contract, for ERC20 recovery in case of stuck tokens due direct transfers to the contract address.\",\"params\":{\"amount\":\"amount to send\",\"to\":\"recipient of the transfer\",\"token\":\"token to transfer\"}},\"getWETHAddress()\":{\"details\":\"Get WETH address used by WETHGateway\"},\"initialize(address,address)\":{\"details\":\"Function is invoked by the proxy contract when the WETHGateway contract  is added to the AddressProvider of the market. Sets the WETH address and the AddressesProvider address. \",\"params\":{\"addressProvider\":\"The address of the AddressProvider*\",\"weth\":\"Address of the Wrapped Ether contract\"}},\"refinanceETH(uint256,uint256,uint256)\":{\"details\":\"refinances a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amount\":\"the borrow amount of the refinanced loan\",\"borrowId\":\"the id of loan to be refinanced\",\"duration\":\"The duration of the refinanced loan, 0 if open-ended\"}},\"repayETH(uint256,uint256)\":{\"details\":\"repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).\",\"params\":{\"amount\":\"the amount to repay, or uint256(-1) if the user wants to repay everything\",\"borrowId\":\"the id of the borrow to repay\"}},\"withdrawETH(uint256,uint256,address)\":{\"details\":\"withdraws the WETH _reserves of msg.sender.\",\"params\":{\"amount\":\"amount of aWETH to withdraw and receive native ETH\",\"reserveId\":\"the id of the target reserve\",\"to\":\"address of the user who will receive native ETH\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/protocol/gateways/WETHGateway.sol\":\"WETHGateway\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xe798cadb41e2da274913e4b3183a80f50fb057a42238fe8467e077268100ec27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://899f850f7df5a270bccfb765d70069959ca1c20d3a7381c1c3bda8a3ffee1935\",\"dweb:/ipfs/QmVdnAqwyX2L3nX2HDA5WKGtVBFyH1nKE9A1k7fZnPBkhP\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x2b3005a0064cfc558bdf64b2bae94b565f4574a536aadd61c13838d4f2157790\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://622c3eb87563e71585c9f538d1a196fe2d154dcc5b8f335e8770a8acc95e1f3a\",\"dweb:/ipfs/QmSnDqJJLzv3mirjGB1vrk5X7hegFdS7BKpscpxyqj7sWu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/IERC20Upgradeable.sol\":{\"keccak256\":\"0x4e733d3164f73f461eaf9d8087a7ad1ea180bdc8ba0d3d61b0e1ae16d8e63dff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75b47c3aeca7b66ea6752f8be020ec5c1c502de6ec9065272dae23d3a52196e2\",\"dweb:/ipfs/QmUebPMHv16tYKFh5BmBQkMfRFb5b8UZ2RgVwdjxCeufVF\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/IERC20MetadataUpgradeable.sol\":{\"keccak256\":\"0x605434219ebbe4653f703640f06969faa5a1d78f0bfef878e5ddbb1ca369ceeb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c9c634f99dd02d73ce7498b03a6305e251c05eeebb71457306561c1fab0fa7d\",\"dweb:/ipfs/QmbYRBbZHy8YoaQKXdPryiL3CSS7uUaRfRYi1TUj9cTqJQ\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x2edcb41c121abc510932e8d83ff8b82cf9cdde35e7c297622f5c29ef0af25183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72460c66cd1c3b1c11b863e0d8df0a1c56f37743019e468dc312c754f43e3b06\",\"dweb:/ipfs/QmPExYKiNb9PUsgktQBupPaM33kzDHxaYoVeJdLhv8s879\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"src/interfaces/IAddressProvider.sol\":{\"keccak256\":\"0x6730abfcd8770e3279dad6137bf619ab98ee8b049e6dd85d2fbe87ba6224fde8\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9b7d1588eab025b049f858ab2f329be7fec220198d956b9b61bf0b9bddc5761a\",\"dweb:/ipfs/QmTaFkYSUfWmbpsyE2TKC1QvP6eTDggZ72ZWodBhydqt5X\"]},\"src/interfaces/ICollateralManager.sol\":{\"keccak256\":\"0xdcb90cae810d15c23e0606ef3d9b30feec7d35e956082b88c1f35c5d6caf6438\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c45a3cf14add38004018f32987cab971436cfd2e679eea71f2383f845bd68647\",\"dweb:/ipfs/QmPd9df3JmDFMHnhreYWw8tjmRGEQAtERnqj2YREXB5aP5\"]},\"src/interfaces/IFToken.sol\":{\"keccak256\":\"0x4c3ebc83c05720c9257d1b6b4930b647c08ba766b76928622a4c91c4a541a718\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://920cb41d52a659b88030fc3cf84fe5a87cc42f0c6e5c83a691c4732f84906689\",\"dweb:/ipfs/Qma657T4np5eBNono5yBXxE71jfT1TRDDkCPpH3kfw3SxM\"]},\"src/interfaces/ILendingPool.sol\":{\"keccak256\":\"0x345ab4285354bb5184bdd501d7c37920a711215b6f6c2db05b05d585f2454115\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3b6264b135760dcdd59b9a3566c1305b00084922da177159a85c206ef6a91266\",\"dweb:/ipfs/QmSotEH7zF3vrEgo2gZuunWwroHgc6bw7TVRntzv7jsJn1\"]},\"src/interfaces/IPoolIncentivesController.sol\":{\"keccak256\":\"0x7cb2c32050814e6d6d962a603104facc3bb1dad15171304e3ee756648e8f9ae1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://cf534f592706b2a61c539c03e5d1e199c15472bcfb4ee69838e5c93ba7914466\",\"dweb:/ipfs/QmPrvXhJigK1Ke51YwAWHon1Kv88WT26iD3MwzCaPDs1Kv\"]},\"src/interfaces/IScaledBalanceToken.sol\":{\"keccak256\":\"0xb6a8f00773c5f58af761573f39f6aa3649c9deec5c4e078f5e3ca78940e4eac7\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://0938c6fd92b015670a2bcf5ff971aafbc6295e07c78d1300c5e36a67002dc70c\",\"dweb:/ipfs/QmYDcxNaAAfnupwDcDN1xtQcCEXTwW1FWiaTiU3MksCQ1Z\"]},\"src/interfaces/IWETH.sol\":{\"keccak256\":\"0x0362c27a2c8e899e736d31c84d7e5d72a9fe722d3b10d7f78f888871bfa908ab\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://c4af992bdb0253a0cfaa392d478381d64c0e0d3834c0709ddeab0b831ee7807d\",\"dweb:/ipfs/QmXaFPzHPFEPXjp6EUFBAcEbybuiSSKa9uSwBMMarm79jy\"]},\"src/interfaces/IWETHGateway.sol\":{\"keccak256\":\"0x831ca4e10b8d5094c6b604e838d0d144aee306027455d0fa74f72f9092bf0a58\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://e216cc7934d2c89de2cd39f5d50b2c812c1fcacc89067537c7787a9a2ec43740\",\"dweb:/ipfs/QmNwFnCpMU3XWHzCx6npHj3gMyXnrDVT6EAzbj9NQNPHMt\"]},\"src/protocol/gateways/WETHGateway.sol\":{\"keccak256\":\"0xff18fc1dfb667afc6f3627e616e926319eee5dbea389defa6fadd176dc7de1d3\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://4e75f36c3ba9c009a3583fbbf4a0aaf1bc993b26fac18c95c9002a04584869b8\",\"dweb:/ipfs/QmVVTbWFF1GkaktG3fahwtXDvsrMCJFGXgmhydiJF7KUU8\"]},\"src/protocol/libraries/configuration/ReserveConfiguration.sol\":{\"keccak256\":\"0xa185efd08f4a3798bbafaa90fafd310f2e29634a2f83b62ee833b31a24232e3c\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://806a0ce876edbbbd418a8297735f66907a06650606b00eac5b510ab082ed3173\",\"dweb:/ipfs/QmQk5ybFrVqXfgXbndYcKBoQiahKScjFEABpJ3ATG8SYPh\"]},\"src/protocol/libraries/helpers/Errors.sol\":{\"keccak256\":\"0x490e76871922e89a13ba0bb88977be18c143fa9d0cd9afb033744a3d81479c52\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://1c409d4d1e1689d8d8f3c3e361198d20f3b6476608c5316d8e2d91f52373e8e3\",\"dweb:/ipfs/QmRZaYpxqjmBpbxb51KqswKYPSeCsU3ejbmk5E3MrMxJaM\"]},\"src/protocol/libraries/types/ConfigTypes.sol\":{\"keccak256\":\"0xa8f9b14d9adf738033fd1847b30012d0e022027614fd6c9bb31a01bc6bfb1634\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://b20c579d1b683dd5977a675c2e46adeebd56c96faa68cda9b0767edf02a5b650\",\"dweb:/ipfs/QmPULpaX2ouktArvXJxYNVPQ9vKBhEeCYA4smo8v57qFLD\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa\",\"dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint8",
              "name": "version",
              "type": "uint8",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Initialized",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "fallback"
        },
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "authorizeExecutionDelegate"
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "assets",
              "type": "address[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchBidETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "tokenValues",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchBorrowETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "onBehalfOfs",
              "type": "address[]"
            },
            {
              "internalType": "uint16[]",
              "name": "referralCodes",
              "type": "uint16[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchDepositETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "durations",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchRefinanceETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "borrowIds",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "batchRepayETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            },
            {
              "internalType": "uint256[]",
              "name": "reserveIds",
              "type": "uint256[]"
            },
            {
              "internalType": "address[]",
              "name": "tos",
              "type": "address[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "batchWithdrawETH"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "asset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "bidETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenValue",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "borrowETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "onBehalfOf",
              "type": "address"
            },
            {
              "internalType": "uint16",
              "name": "referralCode",
              "type": "uint16"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "depositETH"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "emergencyEtherTransfer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "emergencyTokenTransfer"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "getWETHAddress",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "weth",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "addressProvider",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "initialize"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "duration",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "refinanceETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "borrowId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function",
          "name": "repayETH"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "withdrawETH"
        },
        {
          "inputs": [],
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "authorizeExecutionDelegate()": {
            "details": "Authorizes execution delegate to perform WETH transactions*"
          },
          "batchBidETH(address[],uint256[],uint256[],address[])": {
            "details": "batch bid purchases the underlying collatearls of a defaulted borrows.",
            "params": {
              "amounts": "the payment amounts",
              "assets": "addresses of the asset contracts used for payment",
              "borrowIds": "the ids of the defaulted borrows",
              "onBehalfOfs": "The addresses to receive the NFTs."
            }
          },
          "batchBorrowETH(uint256[],uint256[],uint256[],uint256[],uint256,address,uint16)": {
            "details": "batch borrow WETH, unwraps to ETH and send both the ETH and DebtTokens to msg.sender, via `approveDelegation` and onBehalf argument in `LendingPool.borrow`.",
            "params": {
              "amounts": "the amounts of ETH to borrow",
              "duration": "The duration of the loans, 0 if open-ended",
              "onBehalfOf": "The address to receive the loans.",
              "referralCode": "integrators are assigned a referral code and can potentially receive rewards",
              "reserveIds": "The ids of the reserves to borrow against. ",
              "tokenIds": "The tokenIds of the ERC721 / ERC1155 tokens to be deposited. ",
              "tokenValues": "The numbers of same-value tokens supplied (0 implies ERC721)"
            }
          },
          "batchDepositETH(uint256[],uint256[],address[],uint16[])": {
            "details": "batch deposits WETH into the reserve, using native ETH.  A corresponding amount of the overlying asset (fTokens) are minted.",
            "params": {
              "amounts": "the amounts to be deposited",
              "onBehalfOfs": "addresses of the users who will receive the fTokens representing the deposit",
              "referralCodes": "integrators are assigned a referral code and can potentially receive rewards.*",
              "reserveIds": "the ids of the target reserves"
            }
          },
          "batchRefinanceETH(uint256[],uint256[],uint256[])": {
            "details": "batch refinances borrows on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).",
            "params": {
              "amounts": "the borrow amounts of the refinanced loans",
              "borrowIds": "the ids of the loans to be refinanced",
              "durations": "The durations of the refinanced loans, 0 if open-ended"
            }
          },
          "batchRepayETH(uint256[],uint256[])": {
            "details": "batch repays a borrow on the WETH reserve, for the specified amount (or for the whole amount, if uint256(-1) is specified).",
            "params": {
              "amounts": "the amounts to repay, or uint256(-1) if the user wants to repay everything",
              "borrowIds": "the ids of the borrows to repay"
            }
          },
          "batchWithdrawETH(uint256[],uint256[],address[])": {
            "details": "batch withdraws the WETH _reserves of msg.sender.",
            "params": {
              "amounts": "amounts of aWETH to withdraw and receive native ETH",
              "reserveIds": "the ids of the target reserves",
              "tos": "addresses of the users who will receive native ETH"
            }
          },
          "bidETH(address,uint256,uint256,address)": {
            "details": "bid purchases the underlying collatearl of a defaulted borrow.",
            "params": {
              "amount": "the payment amount",
              "asset": "address of the asset contract used for payment",
              "borrowId": "the id of the defaulted borrow",